我刚刚将我的项目从 Qt4 移动到 Qt5,我在包含方面遇到了问题。
对于Qt4,我使用了以下行:
#include <QtGuiQtGui>
#include <QtCoreQtCore>
但这不适用于 Qt5,我不知道我应该使用什么。在QtCreator的例子中,我可以看到它们使用QtWidgets,但我使用MS Visual Studio,并且在那里包含的工作方式略有不同。
你永远不需要使用这些包含。如果您包含整个QtGui
模块,则它已经包含它所依赖的QtCore
,并且在Qt 4或Qt 5中,您只需要#include <QtGui>
。前缀形式<QtModule/QClass>
从来都不是必需的。
由于小部件在Qt 5中移出了gui模块,因此您只需在Qt 5中#include <QtWidgets>
即可。或者,如果您希望同时支持 Qt 4 和 Qt 5:
#include <QtGui>
#if QT_VERSION >= QT_VERSION_CHECK(5,0,0)
#include <QtWidgets>
#endif
1(不建议为模块包含这些标头,最好只包含所需的标头(并尽可能使用前向声明而不是包含(。包含模块标头将提高编译速度(可以提高很多,具体取决于您的项目有多大(。
2(你不应该需要包含中的路径,而不是你可以使用的#include<QtWidgets/QLabel>
:#include <QLabel>
,如果Qt安装正确,它应该可以工作。
3(QtWidgets是Qt5中的一个模块,它包含了Qt4中gui模块中的C++UI元素(QLabel等((gui模块现在只包含一些关于窗口系统,事件,opengl,图像等的基础知识(,所以如果你在C++中创建UI,你需要链接QtWidgets模块,方法是在你的.pro文件中添加QT += widgets
(如果你使用Qt Creator(或在Qt项目的模块选项卡中选择它。设置(如果使用 VS IDE(。
您可以在文档中查看有关模块的更多信息。