7

我已经安装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>

有用。

我只是想知道为什么默认代码是错误的以及如何使默认代码正确。

4

2 回答 2

15

你可能有另一种选择。

您也可以widgets在您的.pro文件中添加

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

通过在文件中添加这一行.pro,现在您无需担心 Qt 版本和包含文件,如<QtGui/QMainWindow><QtWidgets/QMainWindow>

希望它对你有用。

于 2014-03-26T07:27:21.033 回答
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
于 2017-07-25T19:02:30.453 回答