Frage

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.

War es hilfreich?

Lösung

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.

Andere Tipps

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top