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>
Компилятор должен это распознать.