gpt4 book ai didi

c++ - 自定义 QwtPlot 的比例和网格线

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:20:43 26 4
gpt4 key购买 nike

我对使用 QwtPlot 类绘制自定义坐标系感到困惑。我的目标是绘制一个具有自定义比例尺的坐标系,并在这些自定义比例尺上绘制网格线。以下是比例的值:

x 轴和 y 轴刻度:

x1=-0.642455
x2=0
x3=0.642455
y1=-0.642455
y2=0
y3=0.642455

我阅读了QwtPlot class 的用户指南|和 QwtPlotGrid class .我在 QwtPlotGrid 类中找到了一个名为 setxDiv 的函数,似乎它可以提供帮助,所以我编写了以下代码:

QList<double> doubleListmin;//min scale
QList<double> doubleListmed;//medium scale
QList<double> doubleListmaj;//major scale
doubleListmin.append(0.1);
doubleListmed.append(0.3);
doubleListmaj.append(0.642455);
QList<double> doubleList[3];
doubleList[0] = doubleListmin;
doubleList[1] = doubleListmed;
doubleList[2] = doubleListmaj;
QwtScaleDiv *xDiv = new QwtScaleDiv(-0.642455, 0.642455, doubleList);
//lowerbound is -0.642455, upperbound is 0.642455, doubleList customizes the scale

QwtPlotGrid *grid = new QwtPlotGrid();
grid->setXDiv(*xDiv);
//grid->updateScaleDiv(*xDiv, *xDiv);
grid->attach(this);

但事实证明它对新的 QwtPlotGrid 没有影响,它没有改变其比例系统。

我认为还有另一种方法:在 QwtPlot 中画几条线。但我不知道该怎么做。

请有人帮助我!!!提前谢谢你~

最佳答案

正如您所说,“画几条线”不是一个好方法,因为您不能无限地画这条线。为此,有一个特殊的类 QwtPlotMarker,它更适合这里。也许不是世界上最好的东西,但可以随心所欲地工作:

        QwtPlotMarker *m1=new QwtPlotMarker;
m1->setLinePen(QPen(Qt::gray));
m1->setLineStyle(QwtPlotMarker::VLine);
m1->setValue(0,0);
m1->attach(ui->qwtPlot);
QwtPlotMarker *m2=new QwtPlotMarker;
m2->setLinePen(QPen(Qt::gray));
m2->setLineStyle(QwtPlotMarker::HLine);
m2->setValue(0,0);
m2->attach(ui->qwtPlot);
QwtPlotMarker *m3=new QwtPlotMarker;
m3->setLinePen(QPen(Qt::gray));
m3->setLineStyle(QwtPlotMarker::HLine);
m3->setValue(0,-0.642455);
m3->attach(ui->qwtPlot);
QwtPlotMarker *m4=new QwtPlotMarker;
m4->setLinePen(QPen(Qt::gray));
m4->setLineStyle(QwtPlotMarker::HLine);
m4->setValue(0,0.642455);
m4->attach(ui->qwtPlot);
QwtPlotMarker *m5=new QwtPlotMarker;
m5->setLinePen(QPen(Qt::gray));
m5->setLineStyle(QwtPlotMarker::VLine);
m5->setValue(-0.642455,0);
m5->attach(ui->qwtPlot);
QwtPlotMarker *m6=new QwtPlotMarker;
m6->setLinePen(QPen(Qt::gray));
m6->setLineStyle(QwtPlotMarker::VLine);
m6->setValue(0.642455,0);
m6->attach(ui->qwtPlot);

enter image description here

关于c++ - 自定义 QwtPlot 的比例和网格线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26755689/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com