Error : 'QtGui/QMainWindow': No such file or directory : Qt 5.1.1

32.2k views Asked by At

I have installed the Qt5.1.1 and create a new Gui Application. The code in mainwindow.h shows:

#if QT_VERSION >= 0x050000
#include <QtWidgets/QMainWindow>
#else
#include <QtGui/QMainWindow>
#endif

I think it is fine. But when I run it, I have this:

error: C1083: Cannot open include file: 'QtGui/QMainWindow': No such file or directory

I know when I replace

#if QT_VERSION >= 0x050000
#include <QtWidgets/QMainWindow>
#else
#include <QtGui/QMainWindow>
#endif

to

#include <QtWidgets/QMainWindow>

it works.

I just wonder why the default code is wrong and how to make the defauly code right.

2

There are 2 answers

2
AB Bolim On BEST ANSWER

You may have another option.

You can also add widgets in your .pro file like

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> or <QtWidgets/QMainWindow>

Hope it will useful to you.

0
lebendig On

I had the same problem, but it is with nuances. If that code is in the .h file:

    #if QT_VERSION >= 0x050000
    #include <QtWidgets/QMainWindow>
    #else
    #include <QtGui/QMainWindow>
    #endif

the error appears. It seems like QT_VERSION does not defined correctly. But if I move this code to the .cpp file, it is all right. The problem was solved as follows:
1. Add to the .pro file this:

    greaterThan(QT_MAJOR_VERSION, 4) {
        QT += widgets
        DEFINES += HAVE_QT5
    }

2. Add to the .h file this:

    #ifdef HAVE_QT5
    #include <QtWidgets/QMainWindow>
    #else
    #include <QtGui/QMainWindow>
    #endif