我已经安装了Qt5.1.1
并创建了一个新的Gui应用程序。 mainwindow.h中的代码显示:
#if QT_VERSION >= 0x050000
#include <QtWidgets/QMainWindow>
#else
#include <QtGui/QMainWindow>
#endif
我觉得很好。但是当我运行它时,我有这个:
error: C1083: Cannot open include file: 'QtGui/QMainWindow': No such file or directory
我知道何时更换
#if QT_VERSION >= 0x050000
#include <QtWidgets/QMainWindow>
#else
#include <QtGui/QMainWindow>
#endif
到
#include <QtWidgets/QMainWindow>
它有效。
我只是想知道为什么默认代码是错误的,以及如何使defauly代码正确。
答案 0 :(得分:14)
您可能还有其他选择。
您还可以在widgets
文件中添加.pro
,例如
<强> greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
强>
在.pro
文件中添加此行,现在您无需担心Qt版本并包含<QtGui/QMainWindow>
或<QtWidgets/QMainWindow>
希望它对你有用。
答案 1 :(得分:2)
我有同样的问题,但它有细微差别。如果该代码位于 .h 文件中:
#if QT_VERSION >= 0x050000
#include <QtWidgets/QMainWindow>
#else
#include <QtGui/QMainWindow>
#endif
出现错误。似乎QT_VERSION没有正确定义。但是,如果我将此代码移动到 .cpp 文件,那就可以了。
问题解决如下:
1。添加到 .pro 文件中:
greaterThan(QT_MAJOR_VERSION, 4) {
QT += widgets
DEFINES += HAVE_QT5
}
2。添加到 .h 文件中:
#ifdef HAVE_QT5
#include <QtWidgets/QMainWindow>
#else
#include <QtGui/QMainWindow>
#endif