环境是开源的Qt5!
在写代码前先介绍我自己的一些设置,按照设置是可以产生波形的。
打开Qt5,就像普通地新建一个QWidget一样先新建一个QWidget。
新建完以后,用Qt Designer打开UI文件。在UI上添加上一个QWtPlot。
在.pro文件中添加如下代码:
INCLUDEPATH += C:\Qwt-6.1.2\include LIBS += -LC:\Qwt-6.1.2\lib -lqwtd
注意,路径是你安装qwt的路径,请按照自己的实际情况进行修改!
贴出Widget构造函数中的代码。
1 ui->setupUi(this); 2 //设置坐标轴的名称 3 ui->qwtPlot->setAxisTitle(QwtPlot::xBottom, "x->"); 4 ui->qwtPlot->setAxisTitle(QwtPlot::yLeft, "y->"); 5 //设置坐标轴的范围 6 ui->qwtPlot->setAxisAutoScale(QwtPlot::xBottom,true); 7 8 // ui->qwtPlot->setAxisScale(QwtPlot::yLeft,-1.0,1.0); 9 ui->qwtPlot->setAxisAutoScale(QwtPlot::yLeft,true); 10 //设置右边标注 11 // ui->qwtPlot->insertLegend(new QwtLegend(), QwtPlot::RightLegend); 12 13 //使用滚轮放大/缩小 14 (void) new QwtPlotMagnifier( ui->qwtPlot->canvas() ); 15 16 //使用鼠标左键平移 17 (void) new QwtPlotPanner( ui->qwtPlot->canvas() ); 18 19 //计算曲线数据 20 QVector<double> xs; 21 QVector<double> ys; 22 for (double x = 0; x < 2.0 * M_PI; x+=(M_PI / 10.0)) 23 { 24 xs.append(x); 25 ys.append(qSin(x)); 26 } 27 //构造曲线数据 28 QwtPointArrayData * const data = new QwtPointArrayData(xs, ys); 29 curve = new QwtPlotCurve("Sine"); 30 curve->setData(data);//设置数据 31 curve->setStyle(QwtPlotCurve::Lines);//直线形式 32 curve->setCurveAttribute(QwtPlotCurve::Fitted, true);//是曲线更光滑 33 curve->setPen(QPen(Qt::blue));//设置画笔 34 35 curve->attach(ui->qwtPlot);//把曲线附加到plot上 36 37 ui->qwtPlot->replot();
特别说明:
我并没有贴出头文件,如果编译的时候发现某个类不能识别,则是没有包含头文件进来,自己看看帮助把头文件包括进来就可以了~
其实我的代码是在网上down下来的,其实网上那个也可以用,但是就是因为他的代码是写在主文件中的,并且是没有用到指针,所以我就试着把代码该成我需要的方式。在实际应用这种也比较常见。
如果qwtPlot是指针的话,29行的curve也应该是指针类型,它们俩应该对应起来的。在我的代码中,curve是在头文件中定义的私有参数!如下:
QwtPlotCurve *curve;
到此,代码已经写完了!
浙公网安备 33010602011771号