MSVC2012 Qt должен включать каталог?

Я создал собственный Qt5 для msvc2012, используя BlueGo.

Я читал примеры, и они показывают это:

#include <QtGui>

 int main(int argc, char *argv[])
 {
     QApplication app(argc, argv);
     QWidget window;
     window.resize(320, 240);
     window.show();
     window.setWindowTitle(
         QApplication::translate("toplevel", "Top-level widget"));
     return app.exec();
 }

Проблема в том, что QtGui для меня на самом деле является каталогом, а не файлом, поэтому его нельзя включить. Я использую включаемые файлы в /qtbase/include/. Я делаю что-то неправильно?

1 ответ

Решение

Заголовок QtGui фактически существует и просто включает в себя все заголовки из модуля QtGui. Вы можете найти его в каталоге QtGui. Компилятор может найти его, потому что каталог QtGui указан во включаемых путях. Другими словами, это так же, как:

#include <QtGui/QtGui>

Это ужасная практика - включать заголовок QtGui. Вы должны включать только то, что вы на самом деле используете, иначе время компиляции увеличится без веской причины. Однако для быстрых тестов и тому подобного это довольно удобно.

Я знаю, что сейчас немного поздно, но вы можете сделать это так:

добавить gui модуль и widgets в профиле:

QT += widgets core  gui

И, заменив включаемые файлы,

заменить

#include <QtGui/QWidget>
#include <QtGui/QApplication>

с участием

#include <QWidget>
#include <QApplication>

Компилятор должен это распознать.

Другие вопросы по тегам