最近要在Qt上开发图表,比较了几个库,比较中意Qwt,优点是功能强大、开源协议友好。系统以win7为例,在Qt4.8.6下基于VS2008配置Qwt6.1.4图形库。花了一天半才搞定,这里mark一下。
1.准备
Qwt下载地址
下载qwt-6.1.4.zip(windows下的安装文件),qwt-6.1.4.tar.bz2(linux或者unix版本)、qwt-6.1.4.pdf(qwt开发文档),qwt-6.1.4.qch(帮助文档)。
在windows7下将qwt-6.1.4.zip解压出来,放到一个地方(目录不要太深,别带中文否则后面配置文件可能有问题)。
2.使用Qt Creator编译
Qwt库在使用前需要提前编译,编译出来的dll和lib只能给指定版本的系统和Qt来使用,也就是说如果要在linux下使用还需要在linux系统下重新编译。这里建议使用Qt Creator来进行编译,我使用的是Qt Creator4.4.1版本。
在编译前,修改qwt-6.1.4下的qwtconfig.pri文件:
红框处为Qwt具体安放位置(所以前面叫你目录别太深别带中文),注意,横线后面是版本号,如图中表示的路径是F:\QT\qwt-6.1.4,注意斜杠方向。
修改完毕后,在Creator中打开qwt-6.1.4中的qwt.pro(打开需要一段时间,注意Creator右下角状态),点击Creator左边的project,设置编译器,如下图所示:
图中红框中一定要是jom.exe,如果是nmake 编译会出如下错误:
出现以上问题的原因是nmake不支持Qwt的Makefile里那么长字符的编译命令,但是jom.exe可以。这个问题当时卡了我很久,其实一般不会出现,但是我的Creator中jom.exe文件被杀软删掉了,所以找不到jom.exe。我卸载Creator后重新安装就解决了。如果直接在cmd中使用nmake命令来编译也会遇到以上问题。
编译结束以后,会跳出来一个对话框让你填调试工具,直接关掉即可。这时在输出产物文件夹下产生以下文件:
这表示编译成功,在VS2008下(即MSVC)用到qwt.dll、qwt.lib、qwtd.dll、qwtd.lib以上四个文件,其余没用。
3.Qwt安装
所谓的安装其实就是将Qwt中库文件放入Qt文件夹下:
- 将qwtd.dll、qwt.dll拷贝到Qt安装目录\bin下,将qwtd.lib、qwt.lib拷贝到Qt安装目录\lib下。
- 将编译目录\designer\plugins\designer下的qwt_designer_plugin.dll和qwt_designer_plugin.lib拷贝到Qt安装目录\include下。
- 将解压到的qwt-6.1.4\src文件夹拷贝到Qt安装目录\include目录下,改名为QtQWT(或者其他名字,跟下文中的工程.pro配置名字一致)。
此时可以用Creator打开qwt-6.1.4\examples下的例子,编译看能否正确运行:
上图是barchart案例运行情况(说实话默认效果有点丑)。到这就说明你安装成功了。
4.使用Qwt
需要在VS2008中配置Qwt库,需要在你的项目.pro文件中增加Qwt配置:
上图中QtQWT跟文件夹名字一致。需要注意的是,Qwt库分为debug和release两种dll,debug用-lqwtd,release用-lqwt,如果用反了编译会通过,但是运行不起来,会报QWidget: Must construct a QApplication before a QWidget错误。
按照如上配置后,可以尝试将barchart案例中的barchart.h和barchart.cpp加入到项目中,测试编译结果。如果能够编译成功说明跟VS2008兼容良好,可以在案例基础上进行开发。