Qt备忘录之二:Qt4.x向Qt5.x迁移的问题

由于最终确定要以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:

[code lang="cpp" collapse="false"]
#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();
}
[/code]

然后,编译不通过,错误信息是:

报错信息

C1083: 无法打开包括文件:“QApplication”: No such file or directory

什么?找不到头文件?

查了一圈的资料,才知道,Qt5.x与Qt4.x相比,不少类进行了调整,本例中用到的QApplication就由原先的QtGui调整到了QtWidgets中。据说,解决方法也很简单,在.pro文件中添加一句:

[code lang="cpp" collapse="false"]
QT += widgets
[/code]

之后重新“构建”。咦?还是原来的错误?

兜兜转转终于在Qt的官方论坛(http://www.qtcentre.org/threads/53157-C1083-Cannot-open-include-file-QApplication)中找到解决方法:

解决步骤

重新qmake,之后再“构建”,一切OK了。

这么看,Qt5.x与Qt4.x还是有不少差异。后面可能还会陆续出现类似的问题,遇到比较特殊的,将继续补充在本文中。

二零一五年三月六日

顾毅 写于厦门