Ошибка: 'QtGui/QMainWindow': нет такого файла или каталога: Qt 5.1.1

Я установил 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>

оно работает.

Мне просто интересно, почему код по умолчанию неправильный и как сделать правильный код по умолчанию.

2 ответа

Решение

You may have another option.

Вы также можете добавить widgets в вашем .pro файл как

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

By adding this line in .pro file, Now you just no need to worry about Qt version and include file like <QtGui/QMainWindow> или же <QtWidgets/QMainWindow>

Hope it will useful to you.

У меня была такая же проблема, но это с нюансами. Если этот код находится в файле .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
Другие вопросы по тегам