2013-12-01 2 views
7

Я установил Qt5.1.1 и создаю новое приложение Gui. Код в mainwindow.h показывает:Ошибка: «QtGui/QMainWindow»: нет такого файла или каталога: Qt 5.1.1

#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> 

это работает.

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

ответ

13

Возможно, у вас есть другой вариант.

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

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

Добавив эту строку в .pro файл, сейчас вы просто не нужно беспокоиться о Qt версии и включают в себя файл как <QtGui/QMainWindow> или <QtWidgets/QMainWindow>

Надеюсь, это пригодится вам.

+0

уже есть , по-прежнему та же проблема! –

+0

Можете ли вы опубликовать код файла '.pro' с ошибкой/проблемой, поэтому я могу вам помочь. –

1

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