由于最终确定要以Qt5.4作为后续的工程库,刚把Qt的版本升到了5.4,同时VS的版本也升到了2010。幸好还没有大规模的代码迁移,否则单是Qt上就有许多东西要改。目前的开发环境是VS2010+Qt5.4.0+qt-vs-addin-1.2.4。本文对Qt4.x向Qt5.x迁移过程中遇到的一点问题进行总结。
下面是《C++ GUI Programming with Qt 4 2nd Edition》中的一个例子:
hello.cpp:
#include <QApplication> #include <QLabel> int main(int argc, char *argv[]) { QApplication app(argc, argv); QLabel *label = new QLabel("Hello Qt!"); label->;show(); return app.exec(); }
然后,编译不通过,错误信息是:
C1083: 无法打开包括文件:“QApplication”: No such file or directory
什么?找不到头文件?
查了一圈的资料,才知道,Qt5.x与Qt4.x相比,不少类进行了调整,本例中用到的QApplication就由原先的QtGui调整到了QtWidgets中。据说,解决方法也很简单,在.pro文件中添加一句:
QT += widgets
之后重新“构建”。咦?还是原来的错误?
兜兜转转终于在Qt的官方论坛(http://www.qtcentre.org/threads/53157-C1083-Cannot-open-include-file-QApplication)中找到解决方法:
重新qmake,之后再“构建”,一切OK了。
这么看,Qt5.x与Qt4.x还是有不少差异。后面可能还会陆续出现类似的问题,遇到比较特殊的,将继续补充在本文中。
二零一五年三月六日
顾毅 写于厦门