怎么把qwt添加到qt中使用
- 格式:pdf
- 大小:215.53 KB
- 文档页数:2
qwt的用法Qwt是一个基于Qt的图形库,它提供了一系列的图形控件和绘图工具,可以用于绘制各种类型的图表和曲线。
Qwt的使用非常简单,只需要在Qt项目中添加Qwt库,然后就可以使用Qwt提供的各种控件和函数来绘制图表和曲线了。
Qwt的安装和配置Qwt的安装非常简单,只需要下载Qwt的源代码,然后编译安装即可。
Qwt的源代码可以从官方网站上下载,也可以从GitHub上下载。
Qwt的编译需要依赖Qt库,因此在编译之前需要先安装Qt 库。
Qwt的配置也非常简单,只需要在Qt项目中添加Qwt库即可。
在Qt Creator中,可以通过以下步骤来添加Qwt库:1. 在Qt Creator中打开项目,然后选择“项目”菜单,点击“添加库”按钮。
2. 在弹出的对话框中选择“外部库”,然后点击“下一步”。
3. 在“库文件”页面中,点击“添加”按钮,然后选择Qwt库的路径和名称。
4. 在“头文件”页面中,点击“添加”按钮,然后选择Qwt库的头文件路径。
5. 点击“完成”按钮,完成Qwt库的添加。
Qwt的控件和函数Qwt提供了一系列的控件和函数,可以用于绘制各种类型的图表和曲线。
以下是Qwt提供的一些常用控件和函数:1. QwtPlot控件:用于绘制二维图表和曲线。
2. QwtPlotCurve控件:用于绘制曲线。
3. QwtPlotGrid控件:用于绘制网格线。
4. QwtPlotMarker控件:用于绘制标记。
5. QwtLegend控件:用于显示图例。
6. QwtScaleWidget控件:用于显示坐标轴。
7. QwtScaleDraw函数:用于绘制坐标轴刻度。
8. QwtText函数:用于绘制文本。
9. QwtPlotZoomer控件:用于缩放图表。
10. QwtPlotPanner控件:用于平移图表。
Qwt的使用示例以下是一个简单的Qwt使用示例,用于绘制一条正弦曲线:```cpp#include <qwt_plot.h>#include <qwt_plot_curve.h>#include <qwt_legend.h>#include <qwt_legend_item.h>#include <qwt_scale_draw.h>#include <qwt_text.h>#include <qwt_plot_zoomer.h>#include <qwt_plot_panner.h>#include <qwt_plot_grid.h>#include <qwt_plot_marker.h>#include <qwt_symbol.h>#include <qwt_plot_renderer.h>#include <QApplication>#include <QVBoxLayout>#include <QHBoxLayout>#include <QPushButton>#include <cmath>int main(int argc, char *argv[]){QApplication app(argc, argv);// 创建QwtPlot控件QwtPlot *plot = new QwtPlot();plot->setTitle("Sin Curve");plot->setCanvasBackground(Qt::white);// 创建QwtPlotCurve控件QwtPlotCurve *curve = new QwtPlotCurve();curve->setTitle("Sin Curve");curve->setPen(QPen(Qt::red));curve->setRenderHint(QwtPlotItem::RenderAntialiased, true);// 创建数据const int N = 100;double x[N], y[N];for (int i = 0; i < N; i++) {x[i] = i * 0.1;y[i] = sin(x[i]);}// 设置数据curve->setSamples(x, y, N);// 添加QwtPlotCurve控件到QwtPlot控件中curve->attach(plot);// 创建QwtPlotGrid控件QwtPlotGrid *grid = new QwtPlotGrid();grid->setPen(QPen(Qt::gray, 0, Qt::DotLine));grid->attach(plot);// 创建QwtPlotMarker控件QwtPlotMarker *marker = new QwtPlotMarker();marker->setLabel("Max Value");marker->setLabelAlignment(Qt::AlignRight | Qt::AlignTop); marker->setLabelOrientation(Qt::Vertical);marker->setLineStyle(QwtPlotMarker::HLine);marker->setLinePen(QPen(Qt::green, 0, Qt::DashLine));marker->setYValue(1.0);marker->attach(plot);// 创建QwtLegend控件QwtLegend *legend = new QwtLegend();legend->setDefaultItemMode(QwtLegendData::Checkable); plot->insertLegend(legend, QwtPlot::RightLegend);// 创建QwtPlotZoomer控件QwtPlotZoomer *zoomer = new QwtPlotZoomer(plot->canvas());zoomer->setMousePattern(QwtEventPattern::MouseSelect2, Qt::RightButton);zoomer->setZoomBase(true);// 创建QwtPlotPanner控件QwtPlotPanner *panner = new QwtPlotPanner(plot->canvas());panner->setMouseButton(Qt::MidButton);// 创建QPushButton控件QPushButton *saveButton = new QPushButton("Save");saveButton->setFixedSize(100, 30);// 创建布局QVBoxLayout *vLayout = new QVBoxLayout();QHBoxLayout *hLayout = new QHBoxLayout();hLayout->addWidget(saveButton);hLayout->addStretch();vLayout->addWidget(plot);vLayout->addLayout(hLayout);// 创建窗口QWidget *window = new QWidget();window->setLayout(vLayout);window->setWindowTitle("Qwt Example");window->resize(800, 600);// 显示窗口window->show();// 运行应用程序return app.exec();}```以上代码中,我们首先创建了一个QwtPlot控件,然后创建了一个QwtPlotCurve控件,用于绘制正弦曲线。
QT QWT类使用方法总结p, li { white-space: pre-wrap; }鼠标滚轮放大缩小:1.QwtPlotMagnifier *PM = new QwtPlotMagnifier( ui->qwtPlot->canvas());鼠标左键拖动波形:1.QwtPlotPanner *PQ= new QwtPlotPanner( ui->qwtPlot->canvas());鼠标左键选择区域放大:(右键还原)1.QwtPlotZoomer* zoomer = new QwtPlotZoomer( ui->qwtPlot->canvas() );2.zoomer->setRubberBandPen( QColor( Qt::black ) );3.zoomer->setTrackerPen( QColor( Qt::black ) );4.zoomer->setMousePattern(QwtEventPattern::MouseSelect2,Qt::RightButton, Qt::ControlModifier );5.zoomer->setMousePattern(QwtEventPattern::MouseSelect3,Qt::RightButton );设置X轴下面标识:1.ui->qwtPlot->setAxisTitle(QwtPlot::xBottom,"x -->");设置X轴取值范围:1.ui->qwtPlot->setAxisScale(QwtPlot::xBottom, 0.0, 30.0);设置Y轴左边标识(竖着显示):1.ui->qwtPlot->setAxisTitle(QwtPlot::yLeft,"y -->");设置Y轴取值范围:1.ui->qwtPlot->setAxisScale(QwtPlot::yLeft,-1.0, 1.0);创建一个sin()曲线:1.QwtPlotCurve *cSin = new QwtPlotCurve("y = sin(x)");2.cSin->setRenderHint(QwtPlotItem::RenderAntialiased);3.cSin->setLegendAttribute(QwtPlotCurve::LegendShowLine,true);4.cSin->setPen(QPen(Qt::blue));5. cSin->attach(ui->qwtPlot);6.cSin->setData(new FunctionData(::sin));其中FunctionData为:class FunctionData:public QwtSyntheticPointData {public:FunctionData(double(* y)(double)):QwtSyntheticPointData(100),d_y(y){}virtualdouble y(double x)const {return d_y(x);}private:double(*d_y)(double);};1.class FunctionData:public QwtSyntheticPointData2.{3.public:4. FunctionData(double(*y)(double)):5. QwtSyntheticPointData(100),6. d_y(y)7. {8. }9. virtual double y(double x)const10. {11. return d_y(x);12. }13.private:14. double(*d_y)(double);15.};创建波形标识:(Y=0)QwtPlotMarker*mY=new QwtPlotMarker();mY->setLabel(QString:: fromLatin1("y=0"));mY->setLabelAlignment(Qt::AlignRight|Qt::AlignTop);mY->set LineStyle(QwtPlotMarker::HLine);mY->setYValue(0.0);mY->attach(ui->qwtPlot);1.QwtPlotMarker *mY = new QwtPlotMarker();2. mY->setLabel(QString::fromLatin1("y = 0"));3. mY->setLabelAlignment(Qt::AlignRight|Qt::AlignTop);4. mY->setLineStyle(QwtPlotMarker::HLine);5. mY->setYValue(0.0);6. mY->attach(ui->qwtPlot);创建波形标识:(X=PI/2) QwtPlotMarker*mX=new QwtPlotMarker();mX->setLabel(QSt ring::fromLatin1("x=PI/2"));mX->setLabelAlignment(Qt::AlignLeft|Qt::AlignBott om);mX->setLabelOrientation(Qt::Vertical);mX->setLineStyle(QwtPlotMarker::VLi ne);mX->setLinePen(QPen(Qt::black,1,Qt::DashDotDotLine));mX->setXValue(M_PI/ 2);mX->attach(ui->qwtPlot);1.QwtPlotMarker *mX = new QwtPlotMarker();2. mX->setLabel(QString::fromLatin1("x = PI/2"));3. mX->setLabelAlignment(Qt::AlignLeft | Qt::AlignBottom);4. mX->setLabelOrientation(Qt::Vertical);5. mX->setLineStyle(QwtPlotMarker::VLine);6. mX->setLinePen(QPen(Qt::black, 1, Qt::DashDotDotLine));7. mX->setXValue(M_PI/2);8. mX->attach(ui->qwtPlot);设置qwtPlot的画布:(圆角矩形) ui->qwtPlot->canvas()->setLineWidth(1);ui->qw tPlot->canvas()->setFrameStyle(QFrame::Box|QFrame::Plain);ui->qwtPlot->canvas ()->setBorderRadius(15);1.ui->qwtPlot->canvas()->setLineWidth( 1 );2. ui->qwtPlot->canvas()->setFrameStyle( QFrame::Box | QFrame::Plain );3. ui->qwtPlot->canvas()->setBorderRadius( 15 );设置qwtPlot的画布:(白色填充)QPalette canvasPalette(Qt::white);canvasPalet te.setColor(QPalette::Foreground,QColor(133,190,232));ui->qwtPlot->canvas()-> setPalette(canvasPalette);1.QPalette canvasPalette( Qt::white );2. canvasPalette.setColor( QPalette::Foreground, QColor( 133, 190, 232 ));3. ui->qwtPlot->canvas()->setPalette( canvasPalette );设置整个界面的颜色:QPalette pal=palette();const QColor buttonColor=pal.color(Q Palette::Button);QLinearGradient gradient(0,0,0,1);gradient.setCoordinateMode (QGradient::StretchToDeviceMode);gradient.setColorAt(0.0,Qt::white);gradient. setColorAt(0.7,buttonColor);gradient.setColorAt(1.0,buttonColor);pal.setBrush (QPalette::Window,gradient);setPalette(pal);1.QPalette pal = palette();2. const QColor buttonColor = pal.color( QPalette::Button );3. QLinearGradient gradient( 0, 0, 0, 1 );4. gradient.setCoordinateMode( QGradient::StretchToDeviceMode );5. gradient.setColorAt( 0.0, Qt::white );6. gradient.setColorAt( 0.7, buttonColor );7. gradient.setColorAt( 1.0, buttonColor );8. pal.setBrush( QPalette::Window, gradient );9. setPalette( pal );。
qwt的用法Qwt是一个C++图形库,用于在Qt应用程序中添加可视化元素。
它提供了基于Qt的绘图和布局机制,可以轻松地在应用程序中添加曲线绘图、仪表、图形控件和其它可视化元素。
以下是使用Qwt的步骤:1. 安装Qwt库:首先需要从官网下载Qwt库并按照它们的指示进行安装。
警告:Qwt只能与与您的Qt版本匹配的Qwt版本一起使用。
2. 将Qwt添加到Qt项目:将Qwt库添加到Qt项目中需要在.pro文件中添加相应的INCLUDEPATH和LIBS。
例如:INCLUDEPATH += /usr/include/qwtLIBS += -lqwt3. 创建一个QwtPlot对象:从QWidget派生一个QwtPlot对象,并使用addCurve()方法添加绘图曲线:QwtPlot *plot = new QwtPlot(this);plot->setTitle("My Plot");QwtPlotCurve *curve = new QwtPlotCurve("My Curve");curve->setData(xData, yData);curve->attach(plot);4. 设置绘图属性:可以通过QwtPlot类的方法来设置绘图属性,如设置坐标轴、网格线、标题等。
plot->setAxisTitle(QwtPlot::xBottom, "X Axis");plot->setAxisTitle(QwtPlot::yLeft, "Y Axis");plot->insertLegend(new QwtLegend(), QwtPlot::RightLegend);5. 显示绘图:将QwtPlot对象添加到应用程序中并显示:plot->resize(600, 400);plot->show();以上是Qwt的基本用法。
Provided by Trust目录阅读前必看 (1)搭载环境 (3)《详细安装版》 (4)一、下载好全部软件资料: (4)二、安装Qt4.8.5库 (5)三、编译Qwt6.1.0源码 (9)四、给大家看些东西增加一下成就感吧 (14)五、编译QtCreator2.6.2源码(很关键的一步) (16)六、配置QtCreator环境 (21)七、建立工程调试 (26)《快速安装版》 (31)前言: (31)一、下载资料 (31)二、安装Qt4.8.5库 (32)三、复制粘贴工作 (32)四、配置QtCreator环境 (32)五、建立工程调试 (32)作者有话说: (32)阅读前必看1、什么是qwt ?答:如果还要我回答的话,你可以先把这个文档删了,然后再去了解一下。
2、为什么会写这个教程呢?答:因为安装qwt困扰了我一年了,记得第一次安装的时候只能打开它的example,,QtCreator(简称QTC)里面的Designer没有集成qwt的控件。
而我的真正目的是在QTC里面的Designer里面集成qwt的控件,除了这样,以后自己设计的控件也可以集成到里面。
自从上一次失败后,就没有再碰过了。
直到今天的机缘巧合,再次去研究了一下。
经过不断地查资料,不断地卸载安装,不断地重复试验,终于集成成功并且正常运行。
看到网上还有很多人在纠结这个问题,于是决定花时间写这个教程出来。
3、你完成这个集成任务花了多少时间?答:超过12个小时(包括写教程),因为我天资比较不好,接受事物能力比较差,所以花的时间比常人要多很多。
但是我愿意把这十多个小时的劳动成果跟大家分享一下,也希望能帮助更多的人少走歪路。
4、网上大把关于qwt安装教程,你写来干嘛?答:网上大多数教程都是比较零散的,如果你能找到一个比这个教程更加详细,更加容易懂,安装成功率更加高的教程,请你马上告诉我,我会把这个资源删除掉。
也许网上流传一个很经典的教程:《浅入深出在Win XP上傻瓜式编译安装Qwt》,这个教程是我第一次安装qwt时候就看的,写得挺好,但是按照他的方法,我还没有安装成功。
qwt的使⽤实例在.pro⽂件中加⼊INCLUDEPATH += /usr/include/qwtLIBS += -L"/usr/lib/" -lqwt头⽂件:1 #include <qapplication.h>2 #include <qwt_plot.h>3 #include <qwt_plot_curve.h>4 #include <qwt_plot_grid.h>5 #include <qwt_symbol.h>6 #include <qwt_legend.h>1int main( int argc, char **argv ) 2 { 3 QApplication a( argc, argv );1 QwtPlot plot;2 plot.setTitle( "Plot Demo" );3 plot.setCanvasBackground( Qt::white );4 plot.setAxisScale( QwtPlot::yLeft, 0.0, 10.0 );5 plot.insertLegend( new QwtLegend() );新建⼀个QwtPlot构件,即基本的绘图表格设置标题 "Plot Demo"设置背景⽩⾊ //canvas帆布void QwtPlot::setAxisScale ( int axisId, double min, double max, double stepSize = 0 )Disable autoscaling and specify a fixed scale for a selected axis.In updateAxes() the scale engine calculates a scale division from the specified parameters, that will be assigned to the scale widget. So updates of the scale widget usually happen delayed with the next replot.ParametersaxisId min max stepSizeAxis index Minimum of the scale Maximum of the scale Major step size.If step == 0 , the step size is calculated automatically using the maxMajorsetting.对坐标尺⼨的初始化,设置左边y 轴坐标的范围为0~10,坐标为⾮⾃适应.不会⾃动变化设置新的⼀个图例 //legend图例1 QwtPlotGrid *grid = new QwtPlotGrid();2 grid->attach( &plot );View Code在表盘中插⼊⽹格1 QwtPlotCurve *curve = new QwtPlotCurve();2 curve->setTitle( "Some Points" );3 curve->setPen( Qt::blue,4 ),4 curve->setRenderHint( QwtPlotItem::RenderAntialiased, true );新建⼀个曲线设置标题为"Some Points"设置画笔为蓝⾊,宽度4设置曲线抗锯齿1 QwtSymbol *symbol = new QwtSymbol( QwtSymbol::Ellipse,2 QBrush( Qt::yellow ), QPen( Qt::red, 2 ), QSize( 8, 8 ) );3 curve->setSymbol( symbol );设置符号格式,主要⽤来标记点1 QPolygonF points;2 points << QPointF( 0.0, 4.4 ) << QPointF( 1.0, 3.0 )3 << QPointF( 2.0, 4.5 ) << QPointF( 3.0, 6.8 )4 << QPointF( 4.0, 7.9 ) << QPointF( 5.0, 7.1 );5 curve->setSamples( points );新建⼀个QPolygonF类(Qt中⾃带点集f->float)其中void QwtPlotCurve::setSamples ( QwtSeriesData < QPointF > ∗ data )Assign a series of pointssetSamples() is just a wrapper for setData() without any additional value - beside that it is easier to find for the developer.1 curve->attach( &plot );23 plot.resize( 600, 400 );4 plot.show();56return a.exec();7 }⽣成并画图下⾯是源码⽅便⼤家复制#include <qapplication.h>#include <qwt_plot.h>#include <qwt_plot_curve.h>#include <qwt_plot_grid.h>#include <qwt_symbol.h>#include <qwt_legend.h>int main( int argc, char **argv ){QApplication a( argc, argv );QwtPlot plot;plot.setTitle( "Plot Demo" );plot.setCanvasBackground( Qt::green );plot.setAxisScale( QwtPlot::yLeft, 0.0, 10.0 );plot.insertLegend( new QwtLegend() );QwtPlotGrid *grid = new QwtPlotGrid();grid->attach( &plot );QwtPlotCurve *curve = new QwtPlotCurve();curve->setTitle( "Some Points" );curve->setPen( Qt::blue, 4 ),curve->setRenderHint( QwtPlotItem::RenderAntialiased, true );QwtSymbol *symbol = new QwtSymbol( QwtSymbol::Diamond,QBrush( Qt::black ), QPen( Qt::red, 2 ), QSize( 8, 8 ) );curve->setSymbol( symbol );QPolygonF points;points << QPointF( 0.0, 4.4 ) << QPointF( 1.0, 3.0 )<< QPointF( 2.0, 4.5 ) << QPointF( 3.0, 6.8 )<< QPointF( 4.0, 7.9 ) << QPointF( 5.0, 7.1 );curve->setSamples( points );curve->attach( &plot );plot.resize( 600, 400 );plot.show();return a.exec();}View Code。
Windows环境下QWT安装及配置**1.QWT下载路径qwt-6.1.2.zip:qwt相关源代码qwt-6.1.2.pdf:⽤户⼿冊,包含安装说明和类库说明qwt-6.1.2.qch:qwt帮助⽂档,能够添加到Qt Creator中.2.Qwt编译,主要有两种:a)採⽤命令⾏编译命令⾏编译这个就要依据⾃⼰安装的Qt版本号⽽定。
笔者安装的是MinGw版,所以下⾯命令⾏操作针对此版本号⽽⾔,其它版本号的操作能够參看qwt-6.1.2.pdf。
1.解压缩qwt-6.1.2.zip,通过cmd进⼊到qwt-6.1.2⽬录内,运⾏:qmake qwt.pro完毕后运⾏:mingw32-make最后运⾏:mingw32-make install然后就是等等等等……好不easy编译安装完后,可能会有⼈有疑问。
我们编译安装的qwt去哪了?这时你解压的⽬录qwt-6.1.2下有⼀个⽂件qwtconfig.pri。
能够打开看看:QWT_INSTALL_PREFIX = $$[QT_INSTALL_PREFIX]unix {QWT_INSTALL_PREFIX = /usr/local/qwt-$$QWT_VERSION# QWT_INSTALL_PREFIX = /usr/local/qwt-$$QWT_VERSION-qt-$$QT_VERSION}win32 {QWT_INSTALL_PREFIX = C:/Qwt-$$QWT_VERSION# QWT_INSTALL_PREFIX = C:/Qwt-$$QWT_VERSION-qt-$$QT_VERSION}QWT_INSTALL_DOCS = $${QWT_INSTALL_PREFIX}/docQWT_INSTALL_HEADERS = $${QWT_INSTALL_PREFIX}/includeQWT_INSTALL_LIBS = $${QWT_INSTALL_PREFIX}/lib⾮常好理解,这⾥就是指定了你安装的路径了。
QT及其插件QWT安装
1.点击qt-sdk-win-opensource-2010.04进行安装
2.选择安装目录(比如D:\)
3.开始安装QWT
4.打开QT Command Prompt
5.如下
6.解压QWT并复制到与QT Creater 同个盘(如D:\)
7.输入如下命令行
(此时它所在的目录应该包含这些内容的)
9.再输入以下三条命令(第二与第三命令运行时间比较久耐心等待)
qmake qwt.pro
mingw32-make
mingw32-make install
10. 再输入以下三条命令(第三命令运行时间比较久耐心等待)
cd examples
qmake examples.pro
mingw32-make
11.在编译完成qwt目录(不改变的话应该是C:\Qwt-6.0.1)下,有lib目录和designer 目录,
将lib目录里的qwt5.dll文件拷贝至qt sdk的目录下的qt目录的bin目录中(比如本菜菜为D:\qt\qt\bin),将libqwt5.a文件拷贝至对应的lib目录(D:\qt\qt\bin\lib),最后将designer目录下的plugins目录的designer目录下的libqwt_designer_plugin5.a 文件和qwt_designer_plugin5.dll拷贝到跟上面一样对应的plugins目录下的
designer目录(如D:\qt\qt\bin\qt\plugins\designer),看起来十分繁琐,其实是非常简单的过程。
10.再将程序拷到D:\qwt-6.0.1\examples里就能运行了。
Qwt是一个基于LGPL版权协议的开源项目,其目标是提供一组2D的窗体库显示技术领域的数据,数据源以浮点数组或范围的方式提供,输出方式可以是Curves(曲线),Slider (滚动条),Dials(圆盘),compasses(仪表盘)等等。
该工具库基于Qt开发,所以也继承了Qt的跨平台特性,据原作者文档所说,该项目在Qt-win/Qt-x11/Qt-embedded (qvfb环境)上都测试过,运行正常。
项目的主页在:/在网上搜了一下,发现关于qwt的中文资料实在很少,基本上只有关于编译和安装的文章。
实际上经过笔者实践,Qwt的编译和运行实在乏善可陈,qmake;make就可以搞定,没什么可memo的东西,所以这篇文章将以扫盲为主,介绍Qwt的feature。
当然按照正常的顺序,我们还是从编译安装开始。
从svn服务器上下载最新代码:svnco https:///svnroot/qwt/trunk/qwt进入qwt目录,运行你电脑上qt4对应的qmake,再运行make编译。
如笔者环境中是$ cd qwt$ export PATH=/usr/local/Trolltech/Qt-4.5.1/bin/:$PATH$ qmake$ make编译要花个几分钟的时间。
成功后在lib下会生成libqwt.so*文件,并且examples也参与编译,生成的binary在examples/bin下,我们可以运行这些例子初步查看qwt的功能。
$export LD_LIBRARY_PATH=$PWD/lib$cd examples/bin$ ./simplesimple是qwt自带的例子中最简单的一个,一共只有一百来行的代码,实现了数学中的正弦函数(sin())和余弦函数(cos())曲线。
如下图:这个例子里用到的核心类有四个(以下内容是笔者的理解,有可能有不对的地方,请酌情阅读):QwtPlot类似一个2D绘图的容器,里面可以放其他的QwtPlotItem派生类对象,比如本例子中使用的QwtPlotMarker等。
标题:如何在QT中运行QWT
作者:胡振凯
日期:2014/8/16
修改ver.1 2014/8/23
运行环境win8.1专业版。
目的:QT中的GUI库不全,使用QWT库可以编程更容易。
从使用QT,到添加QWT库步骤:
1.Download Qt 5.3.1 for Windows 32-bit (MinGW 4.8.2, OpenGL, 735 MB) (Info) ,
并安装到D:\Qt中(默认为C盘,但我不喜欢什么都放C里)。
●下载过VS2013版本,运行nmake时出现错误,找不到stddef.h文
件。
2.修改环境变量的系统变量的path
●打开控制面板,系统,高级设置,环境变量,path
●添加D:\Qt\Qt5.3.1\5.3\mingw482_32\bin,(包含qmake.exe)
●添加D:\Qt\Qt5.3.1\Tools\mingw482_32\bin (包含mingw32-
make.exe)
3.Google搜索qwt,进入官网,下载并解压qwt-6.1.0。
(下载到哪都无所
谓)。
4.修改qwtconfig.pri文件。
修改安装后路径。
(我要把qwt安装到d:\Qwt-
6.1.0中,默认是c盘。
)
●win32 {QWT_INSTALL_PREFIX = d:/Qwt-$$QWT_VERSION}
5.启动qt命令行程序(类似win dos的那个东东),compile & install qwt文
件。
Qwt下载下来的都是源代码,要做成lib和dll文件,就需要编译和安装(拷贝)两个步骤。
●进入qwt-6.1.0路径,输入命令qmake。
在路径下生成makefile文件。
●输入命令mingw32-make,编译所有cpp文件。
●输入命令mingw32-make install,按照qwtconfig.pri的文件设置,输
出到安装(拷贝)目录d:/Qwt-6.1.0。
6.设置环境变量的系统变量,添加path,D:\Qwt-6.1.0\lib。
很多人把编译好
的文件拷贝到qt库文件夹下。
其实,只要设置系统变量的path,编译程序就会查找这个文件夹了,所以不用拷贝来拷贝去的。
7.在用户变量新建“QMAKEFEATURES”,添加路径D:\Qwt-6.1.0\features。
里
面包含pri文件,负责当执行QMAKE时能够连接到qwt。
8.拷贝D:\Qwt-6.1.0\plugins\designer里面的qwt_designer_plugin.dll到
D:\Qt\Qt5.3.1\5.3\mingw482_32\plugins\designer中。
这样启动qt designer 的时候,qwt的plugin就可以找到。
9.添加qwt帮助文档:
●将下载的qwt-6.1.0.qch文件拷贝到D:\Qt\Qt5.3.1\Docs\Qt-5.3
●或者,运行qt creator -> tools-> options -> help -> documentation -
>add,添加qwt-6.1.0.qch文件。
10.使用qwt时,要在.pro文件里添加CONFIG += qwt,否则会无法找到qwt
库。
通过以上步骤,可以有以下效果:
1.Qt可以使用qwt库。
2.Qt designer可以直接看到qwt的plugin,直接用鼠标来做GUI。
(注意是
Qt designer程序,不是Form editor。
直接双击目录行上的.ui文件,进入的是Form editor,所以看不到qwt。
右键.ui文件,打开方式选择Qt
design。
)
3.编码时,使用qwt库类或函数时,按F1会出现帮助资料。
左侧菜单栏的
帮助栏里也出现了qwt库帮助信息。
后记:
我曾经先安装过qt-5.1.0,在这个环境下,安装了qwt-6.1.0,后来卸载了qt-5.1.0,又安装了qt-5.3.1。
也拷贝了qwt的plugin到qt里。
但是qwt的plugin就不能在qt designer里显示了。
后来卸载了qwt,又安装一遍,成功了。
说明qwt安装后所生成的dll文件和qt版本是相关的,不能混用。
---- 2014/8/23。
胡振凯。