Это очевидно. Вам нужен QApplication
, чтобы иметь QWidget
. Измените QGuiApplication
на QApplication
, и код будет работать нормально.
#include<QApplication>
#include"MainWindow.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MainWindow w;
w.show();
return app.exec();
}
Если вы хотите знать, «Почему есть дерево основные классы, как QApplication, QGuiApplication и QCoreApplication», см this. Он говорит:
QCoreApplication является базовым классом, QGuiApplication расширяет базовый класс с функциональностью, связанных с использованием окна и GUI материал (не виджет, связанные, например, OpenGL или QtQuick), QApplication расширяет QGuiApplication с функциональностью связанной для обработки виджетов.
Btw, разве это не основной пример, доступный на Qt Creator? Вам нужна книга для изучения Qt, и я предлагаю вам прочитать «Программирование на языке C++ с Qt 4 (2nd Edition)» от Jasmin Blanchette.
Решающее различие между QGuiApplication и QApplication эта книга не будет охватывать, хотя, как это о Qt 4 и QGuiApplication был введен в Qt5. –
@FrankOsterfeld Я упомянул разницу между QApplication, QGuiApplication и QCoreApplication с http://www.qtcentre.org/threads/60203. Знаете ли вы хорошую книгу Qt5? – Ho1