兰钊

博客园 首页 新随笔 联系 订阅 管理

环境是开源的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;

到此,代码已经写完了!

posted on 2016-05-07 22:36  兰钊  阅读(271)  评论(0)    收藏  举报