Qwt 编译 配置 使用

摘要:
然后执行:成功执行nmakeinstall命令后,include子目录将在C:qwt-6.1.2目录下生成,其中包含98。h头文件,这也将在以后的配置中使用。2) 编译设计器:cddesignerqmakedesigner.pronmake的目的是在C:QWTdesignerpluginsdesignerdirectory_designer_plugin.dll、qwt_designer_plugin.lib下生成qwt3) 编译示例:cd Cdexamplesqmakeexamples.ponmake--长时间等待。成功后,您可以在examplesin目录中找到实例的可执行文件进行学习。4) 到目前为止,QWT的安装和配置已完成。打开QTDesigner,您可以在Widgetbox中看到Qwt。

QWT,全称是Qt Widgets for Technical Applications,是一个基于LGPL版权协议的开源项目,可生成各种统计图。它为具有技术专业背景的程序提供GUI组件和一组实用类,其目标是以基于2D方式的窗体部件来显示数据,数据源以数值,数组或一组浮点数等方式提供,输出方式可以是Curves(曲线),Slider(滚动条),Dials(圆盘),Compasses(仪表盘)等等。该工具库基于Qt开发,所以也继承了Qt的跨平台特性。

环境:VS2010 + Qt4.8.6

(本示例基于QT4,如用QT5可参考更改)

1、下载:

QWT下载地址:http://sourceforge.net/projects/qwt/files/qwt/

QWT版本:6.1.2

相关文件:qwt-6.1.2.zip(源码);qwt-6.1.2.pdf(说明文档);qwt-6.1.2.qch(帮助文档。可以将该帮助文档添加到Qt Assistant中.首先将该帮助文档复制到C:Qt4.8.6docqch中,打开Qt Assistant,编辑->首选项->文档->添加,选中qwt-6.1.2.qch确定即可);

qwt-6.1.2.zip中包括:designer目录:存放QWT插件的源码;doc目录:存放帮助文档;examples目录:存放QWT的示例(源码、可执行程序);src目录:存放QWT的源码;textengines目录:存放数学指标语言的文本驱动引擎代码;还包含一些pro等工程文件等。

2、编译:

1)     编译QWT:打开Visual Studio命令提示(2010)窗口,先进入QWT的ZIP解压到目录qwt-6.1.2(即下载的qwt-6.1.2.zip解压为qwt-6.1.2目录),即带有QWT.PRO文件的目录。执行命令:

cd C: qwt-6.1.2

qmake qwt.pro 

nmake 

经过漫长的等待,编译成功后,在C:qwt-6.1.2目录下的lib子目录下应该生成了后面需要的qwt.dll、qwt.lib、qwtd.dll、qwtd.lib文件;在C:qwt-6.1.2designerpluginsdesigner目录下生成了qwt_designer_plugin.dll、qwt_designer_plugin.lib等文件。这些文件在后面配置QT Designer时会用到。

接着执行:

nmake install

命令执行成功后,将在C:qwt-6.1.2目录下生成include子目录,里面包含98个.h头文件,该文件夹后面配置时也会用到。

之前的版本,在编译时需要单独编译designer目录,新版本已经不需要了,如果是6.1.0及以前的版本,还需执行下面的第2步,如果用的是6.1.2就可以跳过这步,直接进行第3步。

2)     编译designer:

cd designer

qmake designer.pro

nmake 

这一步的目的是在C:QWTdesignerpluginsdesigner目录下生成qwt_designer_plugin.dll、qwt_designer_plugin.lib;

3)    编译examples:

cd ..

cd examples

qmake examples.pro

nmake

--漫长等待,成功后,在examplesin目录下可以找到实例的可执行文件学习。

3、配置

1)     将C:qwt-6.1.2lib下的qwt.dll、qwtd.dll、qwtd.pdb拷贝到C:QT4.8.6in下,将qwtd.lib、qwt.lib拷贝C:QT4.8.6lib下(以qt安装目录C:QT4.8.6为例)。

2)     将C: qwt-6.1.2designerpluginsdesigner目录下的qwt_designer_plugin.dll、qwt_designer_plugin.lib拷贝到C:Qt4.8.6pluginsdesigner目录下。

3)     将C:Qwt-6.1.2目录下的include文件夹(或该目录下的src文件夹下的h和cpp文件)复制到C:QT4.8.6include目录下,并将其重命名为Qwt。

4)     至此,QWT安装配置完成,打开QT Designer,在Widget box可以看到Qwt。

4、使用

在VS中,新建项目,在项目的解决方案资源管理器中选中主项目,点右键->属性,然后进行配置(根据生成方式Debug或者Release略有不同):

(1)属性-<配置属性-<C/C++-<常规,附加包含目录:$(QTDIR)includeQWT

(2)属性-<配置属性-<链接器-<输入,Debug方式附加依赖项:C:QT4.8.6libqwtd.lib;Release方式附加依赖项:C:QT4.8.6libqwt.lib

(3)属性-<配置属性-<C/C++-<预处理器,预处理器定义:QWT_DLL

所有工作准备完成之后,写一个demo,测试一下:

 

Qwt 编译 配置 使用第1张

5、示例(原文:http://blog.csdn.net/tengweitw/article/details/41911035

     首先,我们新建一个Qt应用程序,然后一路默认即可。这时,你会发现总共有:mainwindow.h,mainwindow.cpp,main.cpp,mainwindow.ui四个文件。

     然后,选中项目,添加新文件,添加一个c++类,我们假设命名为PlotLines,基类选择QwtPlot,选择继承自QWidget。

     接着,在pro文件中添加

                                         INCLUDEPATH +=D:QtQt5.3.05.3msvc2010_openglincludeQWT

                                         LIBS+= -lqwtd

    注意,我这里是将绘制曲线单独用一个类PlotLines表示的,而不是向参考实例一样是直接放在其他类的内部。所以这里我们需要在类的头文件中添加关键性语句:

    #define QWT_DLL

    最后,在主文件main.cpp中添加我们类的头文件,并在函数中生成该类的实例并显示,修改后的main.cpp文件如下所示:

 
 1 #include "mainwindow.h"  
 2 #include <QApplication>  
 3 #include"plotlines.h"  
 4 int main(int argc, char *argv[])  
 5 {  
 6     QApplication a(argc, argv);  
 7 //    MainWindow w;//这里的主窗口我们没有使用,当然也可以在主窗口中显示曲线  
 8 //    w.show();  
 9     PlotLines line;  
10     line.show();  
11     return a.exec();  
12 }  

PlotLines.h文件如下:

 1 #ifndef PLOTLINES_H  
 2 #define PLOTLINES_H  
 3 #define QWT_DLL  
 4 #include<qwt_plot.h>  
 5 #include <qwt_plot_layout.h>  
 6 #include <qwt_plot_canvas.h>  
 7 #include <qwt_plot_renderer.h>  
 8 #include <qwt_plot_grid.h>  
 9 #include <qwt_plot_histogram.h>  
10 #include <qwt_plot_curve.h>  
11 #include <qwt_plot_zoomer.h>  
12 #include <qwt_plot_panner.h>  
13 #include <qwt_plot_magnifier.h>  
14 #include <qwt_legend.h>  
15 #include <qwt_legend_label.h>  
16 #include <qwt_column_symbol.h>  
17 #include <qwt_series_data.h>  
18 #include <qpen.h>  
19 #include <qwt_symbol.h>  
20 #include <qwt_picker_machine.h>  
21 class PlotLines : public QwtPlot  
22 {  
23     Q_OBJECT  
24 public:  
25     explicit PlotLines(QWidget *parent = 0);  
26 private Q_SLOTS:  
27     void showItem(const QVariant &itemInfo, bool on);//点击图例,显示相应的曲线  
28 };  
29   
30 #endif // PLOTLINES_H  
 

PlotLines.cpp文件如下:

 1 #include "plotlines.h"  
 2   
 3 PlotLines::PlotLines(QWidget *parent) :  
 4     QwtPlot(parent)  
 5 {  
 6     setTitle("图的标题");  
 7 //---------设置画布---------//  
 8     QwtPlotCanvas *canvas=new QwtPlotCanvas();  
 9     canvas->setPalette(Qt::white);  
10     canvas->setBorderRadius(10);  
11     setCanvas( canvas );  
12     plotLayout()->setAlignCanvasToScales( true );  
13   
14     //-----------设置x,y坐标和范围--------------//  
15     setAxisTitle( QwtPlot::yLeft, "ylabel" );  
16     setAxisTitle( QwtPlot::xBottom, "xlabel" );  
17     setAxisScale(QwtPlot::yLeft,0.0,10.0);  
18     setAxisScale(QwtPlot::xBottom,0.0,10.0);  
19   
20     //----------------设置栅格线-------------------//  
21     QwtPlotGrid *grid = new QwtPlotGrid;  
22     grid->enableX( true );//设置网格线  
23     grid->enableY( true );  
24     grid->setMajorPen( Qt::black, 0, Qt::DotLine );  
25     grid->attach( this );  
26   
27     //-----------------开始画图----------------------//  
28     QwtPlotCurve *curve=new QwtPlotCurve("curve");  
29    // curve->setTitle( "信道"+QString( "%1 " ).arg( i+1));  
30     curve->setPen(Qt::blue,2);//设置曲线颜色 粗细  
31     curve->setRenderHint(QwtPlotItem::RenderAntialiased,true);//线条光滑化  
32   
33     QwtSymbol *symbol = new QwtSymbol( QwtSymbol::Ellipse,  
34     QBrush( Qt::yellow ), QPen( Qt::red, 2 ), QSize( 6, 6) );//设置样本点的颜色、大小  
35     curve->setSymbol( symbol );//添加样本点形状  
36   
37     QPolygonF points1, points2;//输入节点数据QPointF(x,y)  
38     points1<<QPointF(1,1)<<QPointF(2,2)<<QPointF(3,3)<<QPointF(4,4)<<QPointF(5,5)<<QPointF(6,6)<<QPointF(7,7);  
39     points2<<QPointF(1,2)<<QPointF(2,3)<<QPointF(3,4)<<QPointF(4,5)<<QPointF(5,6)<<QPointF(6,7)<<QPointF(7,8);  
40     curve->setSamples(points1);  
41     curve->attach( this );  
42     curve->setLegendAttribute(curve->LegendShowLine);//显示图例的标志,这里显示线的颜色。  
43   
44     //曲线2的形状采用默认,即不单独设置画笔的颜色、样本点的显示  
45     QwtPlotCurve *curve2=new QwtPlotCurve("curve2");  
46     curve2->setSamples(points2);  
47     curve2->attach( this );  
48     curve2->setLegendAttribute(curve->LegendShowLine);  
49   
50 //--------------设置图例可以被点击来确定是否显示曲线-----------------------//  
51     QwtLegend *legend = new QwtLegend;  
52     legend->setDefaultItemMode( QwtLegendData::Checkable );//图例可被点击  
53     insertLegend( legend, QwtPlot::RightLegend );  
54     connect( legend, SIGNAL( checked( const QVariant &, bool, int ) ),  
55         SLOT( showItem( const QVariant &, bool ) ) );//点击图例操作  
56   
57     QwtPlotItemList items = itemList( QwtPlotItem::Rtti_PlotCurve );//获取画了多少条曲线,如果为获取其他形状,注意改变参数  
58    //  qDebug()<<items;  
59     for ( int i = 0; i < items.size(); i++ )  
60     {  
61         if ( i == 0 )  
62         {  
63             const QVariant itemInfo = itemToInfo( items[i] );  
64             QwtLegendLabel *legendLabel =  
65                 qobject_cast<QwtLegendLabel *>( legend->legendWidget( itemInfo ) );  
66             if ( legendLabel )  
67                 legendLabel->setChecked( true );//  
68             items[i]->setVisible( true );  
69         }  
70         else  
71         {  
72             items[i]->setVisible( false );  
73         }  
74     }  
75     this->resize(600,400);  
76     this->replot();  
77     setAutoReplot( true );//设置自动重画,相当于更新  
78 }  
79 //点击图例,显示相应的曲线  
80 void PlotLines::showItem(const QVariant &itemInfo, bool on)  
81 {  
82     QwtPlotItem *plotItem = infoToItem( itemInfo );  
83     if ( plotItem )  
84         plotItem->setVisible( on );  
85 }  
 

其他的文件没有作任何改变,在此就不列出来了。显示结果如下图:

1、初始界面如下:

Qwt 编译 配置 使用第2张 

2、点击右上角的图例后:

Qwt 编译 配置 使用第3张 

本文所创建的PlotLines类,完成的功能如下:

1、坐标轴的绘制

2、根据数据点绘制相应的曲线

3、右上角的图例可以点击,并显示或隐藏对应曲线

免责声明:文章转载自《Qwt 编译 配置 使用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇MHDD检测电脑硬盘坏道Canvas和SVG区别(小白),以及两者的基础知识点下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

1009 Linux的文件系统介绍以及各种设备的说明

Linux的文件编程 linux文件管理系统分为3部分:与文件管理有关的软件,被管理的文件,实施文件管理需要的数据结构 用C语言建立,打开,关闭文件,向文件写入和读出数据等。Linux文件系统简介     从系统角度看:文件系统是对文件存储空间进行组织和分配,负责文件存储,并对存入的文件进行保护和检索的系统。负责为用户建立文件,存入,读出,修改,转存,控制...

linux下给apache设置虚拟主机

linux下apache的配置文件目录在/etc/apache2/sites-available/default里,在默认内容的最后添加需要设置的服务器域名和对应目录就行。<VirtualHost *:80>ServerName www.adangmedia.comDocumentRoot /home/adang/workspace/www/&...

vue前端工程化

今日目标 1.能够了解模块化的相关规范 2.了解webpack3.了解使用Vue单文件组件4.能够搭建Vue脚手架5.掌握Element-UI的使用 1.模块化的分类 A.浏览器端的模块化 1).AMD(Asynchronous Module Definition,异步模块定义)代表产品为:Require.js2).CMD(Common Module D...

SVN常见问题汇总

1、’.’ is not a working copy.Can’t open file‘.svn/entries’: 系统找不到指定的路径。 解答:原因是输入的访问路径不正确,如svn://192.168.6.200/如果最后少写了“/”,就会出现这种错误提示。2、将文件checkout之后,没有出现SVN的图标,是怎么回事?解答:有些时候在客户端Che...

给PHP安装和开启curl扩展

安装某些PHP源码如CMSTOP时需求系统开启curl扩展,这需要修改PHP的配置,在Windows 中只需简单三步。 一、window下安装php_curl支持 1.将PHP安装文件夹下的三个文件php_curl.dll(可能在ext文件夹中),libeay32.dll,ssleay32.dll 复制到 %windir%/system32下;2.打开p...

获取Cygwin目录下所有文件的完全权限:takeown

Win7 64位企业版亲测。 假设Cygwin安装在F:Cygwin64 目录下。 步骤: 1. 以管理员身份运行cmd 2. 输入命令: takeown /f F:Cygwin64* /r 等待完成即可。完成后,当前Windows用登陆户就获得了对F:Cygwin64目录下所有文件的完全权限。 用途:重装系统后卸载Cygwin,在Cygwin使用过程中出...