最近做了一个开源项目diffpdf,大弄了一番qt,个中辛酸不得不让自己写下来踩过多少的坑
文件下载与安装
所有文件均可在QT官网获取,不要去一些私人的云盘或软件网站下载
http://download.qt.io/archive/
- 1.qt-opensource-windows-x86-5.9.8.exe,这个并不是最新的版本,也不是比较旧,因为第一次接触,所以选了一个中间的版本尝试,避免有什么特殊的问题,另外,这个是傻瓜式安装包,含有所有qt相关的开发环境,所以难免文件会大一点
- 2.diffpdf-2.1.3.tar开源项目
- 3.poppler-0.39.0-win32.zip,这个是已经编译好的文件,可以直接使用,不用自己在window下部署一遍奇烦的poppler,其他的版本可以可以在这里找到Poppler for Windows
- 4.poppler-0.39.0.tar.xz 这里一定要与win32的版本一致,不然有些方法会对不上
首先不得不说,自己是第一次玩qt,所以直接用傻瓜式的安装方法,对于会ming32,qt-creator,qt-version独立安装的,可以跳过
QT安装注意
总体的过程就是: Next-Skip-下一步-下一步-下一步-下一步-下一步-安装(漫长的等待环节)
其中在第四步的时候需要注意
在漫长的等待过后,完成时会默认勾选启动qt creator,我们打开,试试它的示例项目,能够运行起来,则说明qt环境部署完成了。
除示例项目外,还可以自己新建一个widget项目,直接编译运行,看看会不会找不到qt5的dll,
如何出现提示“QT5Guid.dll”"QT5Core.dll"等情况,需要自己添加QT的环境变量
对于傻瓜式安装,还有一个好处,就是不需要在qt creator里面去自定义 kit,这个非常关键,对于qt 的编译环境和库链接,全是看kit使用的编译器,当然,明白个中关系也是值得花时间学习的
补充一些小插曲,由于开源项目diffpdf 是2012年的了(收费版本的除外),使用的qt4,低版本的poppler,还有神奇的gcc4.4.0,这个神奇而另新手窒息的版本,不仅花时间,还花成本,反正就是,新手接触qt的话,不建议学qt4,项目也是,狠心一点,坑坑就过去了。
DiffPDF
项目源代码下载:diffpdf-2.1.3.tar
这个是DiffPDF的官网:http://www.qtrac.eu/diffpdf.html
相关的项目在github上也有,不过是个人修改过或者是备份的
编译这个项目,需要先知道以下两点点:
- 1.QT4项目升级QT5
- 2.poppler在window下的使用
下面详细说说过程
- 1.文件解压,diffpdf-2.1.3.tar,poppler-0.39.0,poppler-0.39.0-win32,
- 2.项目文件准备:
- 2.1 diffpdf-2.1.3项目下新建poppler文件夹,把poppler-0.39.0-win32里面的libpoppler.dll,libpoppler-qt5.dll,libpoppler.dll.a,libpoppler-qt5.dll.a复制过去
- 2.2 把poppler-0.39.0/qt5/src 下的.h,.cpp文件复制过去
- 2.3 修改添加引用路径和引用库
INCLUDEPATH += $$PWD/poppler
win32: LIBS += -L$$PWD/poppler -llibpoppler
win32: LIBS += -L$$PWD/poppler -llibpoppler-qt5
- 2.4 打开diffpdf.pro项目 把关于poppler-qt4的所有相关删除,改为引用poppler-qt5,
- 2.5 QT4升级QT5的一些补充,明文添加引用
QT += widgets
QT += gui
QT += printsupport
- 2.6 没有poppler-version,poppler-global,则去poppler-0.39.0/cpp 下找到复制到项目的poppler下,
- 2.7 接下来一遍编译,一边修改问题,遇到问题,则去搜索引擎寻找解决方法,这个过程很痛苦,但是,坚持总会有好结果,
- 2.8 对于QMimeData的问题,因为不想去编译qt,修改源代码,所以就把那段代码注释了,
- 2.9 编译通过后,如果实际运行时提示没有找到poppler.dll 和 poppler-qt5.dll ,则需要把这两个文件复制到输出的程序目录
- 2.10 至于程序打包发布,有很多方法,我这里用的是Enigma Virtural Box
- 2.11 运行结果
言外
- 1.为什么编译diffpdf项目?
项目需要pdf对比功能,找过不少相关软件,又不想花钱,又有自己的需求,所以要编译修改才可以应用到自己的项目上 - 2.qt开发怎么样?
呃,虽然懂点C++,但是感觉QT还是比较高大上的,毕竟是开发客户端的,很多牛逼的项目都是QT所作,但不是专门从事的话,用起来还是比较的乏力
last modified 2019年6月13日11:25:57