Qt--编译安装QWT

1.下载

  https://sourceforge.net/projects/qwt/files/

2.编译

 

 

 编译参考如下:

1 Qt Creator打开源码内的qwt.pro,注意:编译器选择Release版本,编译器使用与creator的一样的版本,这里使用msvc2015 32bit。
2 打开编译开关,在qwt->other files->qwt.prf中,去掉QMAKE_RPATHDIR的注释。
3 designer>qwtbuild>qwtbuild.pri,注释掉qwtbuild.pri里的CONFIG += debug_and_release。
4 先点击构建菜单中qmake,再点击构建,开始编译。
5 编译结束。

3.安装qwt

 

 

 

 4.使用qwt

  1.新建一个工程,在其目录中新建lib和include目录:

  2.然后把qwt.lib和qwtd.lib复制到lib目录,把前面qwt源码目录中src中那些.h头文件都复制到include目录

  

  3.在工程节点上鼠标右键选择添加库,接着选择添加外部库,选则qwt.lib即可,它会自己处理qwtd.lib,然后查看pro文件,qt自动在里面添加了内容.

    4.代码实现

 

  5.拖拽实现

 

 

 5.最终实现

 简单折线图例子

 1 #include <qmath.h>  
 2 #include <QVector>  
 3 #include <qwt_plot.h>  
 4 #include <qwt_plot_curve.h>  
 5 #include <qwt_plot_magnifier.h>  
 6 #include <qwt_plot_panner.h>  
 7 #include <qwt_legend.h> 
 8 #include <qwt_point_data.h> 
 9 #include <qwt_plot_grid.h>
10 #include <qwt_plot_zoomer.h>
11 #include <qwt_picker_machine.h>
 1 //设置坐标轴的名称  
 2     ui.qwtPlot->setAxisTitle(QwtPlot::xBottom, "x->");
 3     ui.qwtPlot->setAxisTitle(QwtPlot::yLeft, "y->");
 4     //设置坐标轴的范围  
 5     ui.qwtPlot->setAxisScale(QwtPlot::xBottom, 0.0, 2.0 * M_PI);
 6     ui.qwtPlot->setAxisScale(QwtPlot::yLeft, -1.0, 1.0);
 7     //设置右边标注  
 8     ui.qwtPlot->insertLegend(new QwtLegend(), QwtPlot::RightLegend);
 9 
10     //使用滚轮放大/缩小  
11     (void) new QwtPlotMagnifier(ui.qwtPlot->canvas());
12 
13     //使用鼠标左键平移  
14     (void) new QwtPlotPanner(ui.qwtPlot->canvas());
15 
16     //选择图形局部放大
17     QwtPlotZoomer *zoomer = new QwtPlotZoomer(ui.qwtPlot->canvas());
18     zoomer->setRubberBandPen(QColor(Qt::blue));
19     zoomer->setTrackerPen(QColor(Qt::black));
20     zoomer->setMousePattern(QwtEventPattern::MouseSelect2, Qt::RightButton, Qt::ControlModifier);//ctrl+右键==回复到原始状
21     zoomer->setMousePattern(QwtEventPattern::MouseSelect3, Qt::RightButton); //右键==恢复到上一次扩大之前的状态
22 
23     //默认的左键移动功能
24     QwtPlotPanner *panner = new QwtPlotPanner(ui.qwtPlot->canvas());                                   
25     panner->setMouseButton(Qt::RightButton);        //设置哪个按钮移动画布  如果不设置(注册掉当前行)按钮默认为左键为移动
26 
27     //默认的滑轮及右键缩放功能  图形的整体缩放
28     QwtPlotMagnifier *magnifier = new QwtPlotMagnifier(ui.qwtPlot->canvas());                 
29     magnifier->setMouseButton(Qt::LeftButton);     //设置哪个按钮与滑轮为缩放画布  如果不设置(注册掉当前行)按钮默认为滑轮以及右键为缩放
30 
31     //实时显示坐标数据
32     QwtPlotPicker *d_picker = new QwtPlotPicker(QwtPlot::xBottom, QwtPlot::yLeft,
33         QwtPlotPicker::CrossRubberBand, QwtPicker::AlwaysOn,
34         ui.qwtPlot->canvas());
35     d_picker->setStateMachine(new QwtPickerDragPointMachine());
36     d_picker->setRubberBandPen(QColor(Qt::green));
37     d_picker->setRubberBand(QwtPicker::CrossRubberBand);
38     d_picker->setTrackerMode(QwtPicker::ActiveOnly);//被激活时候显示
39     d_picker->setTrackerPen(QColor(Qt::white));
40 
41     //计算曲线数据  
42     QVector<double> xs;
43     QVector<double> ys;
44     for (double x = 0; x < 2.0 * M_PI; x += (M_PI / 10.0))
45     {
46         xs.append(x);
47         ys.append(qSin(x));
48     }
49     //构造曲线数据  
50     //QwtPointArrayData * data = new QwtPointArrayData(xs, ys);
51     QwtPlotCurve *curve=new QwtPlotCurve("Sine");
52     curve->setSamples(xs, ys);//设置数据  
53     curve->setStyle(QwtPlotCurve::Lines);//直线形式  
54     curve->setCurveAttribute(QwtPlotCurve::Fitted, true);//是曲线更光滑  
55     curve->setPen(QPen(Qt::blue));//设置画笔  
56     curve->attach(ui.qwtPlot);//把曲线附加到plot上  
57 
58     QwtPlotGrid *grid = new QwtPlotGrid();//设置网格线
59     grid->enableX(true);
60     grid->enableY(true);
61     grid->setMajorPen(Qt::black, 0, Qt::DotLine);
62     grid->attach(ui.qwtPlot);
63 
64 
65     ui.qwtPlot->show();
66     ui.qwtPlot->replot();

 

posted @ 2024-03-12 10:48  wuyuan2011woaini  阅读(46)  评论(0编辑  收藏  举报