To oczywiste. Potrzebujesz QApplication
, aby uzyskać QWidget
. Zmień QGuiApplication
na QApplication
, a kod będzie działał poprawnie.
#include<QApplication>
#include"MainWindow.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MainWindow w;
w.show();
return app.exec();
}
Jeśli chcesz wiedzieć, „Dlaczego istnieje drzewo główne klasy jak QApplication, QGuiApplication i QCoreApplication”, patrz this. Mówi:
QCoreApplication jest klasą bazową, QGuiApplication rozszerza podstawową klasę z funkcjonalności związane z obsługą okna i GUI rzeczy (non-widget związane np OpenGL lub QtQuick) QApplication rozciąga QGuiApplication z funkcjonalnością powiązanej do obsługi widżetów.
Btw, czy nie jest to podstawowy przykład dostępny na Qt Creator? Potrzebujesz książki, żeby nauczyć się Qt, i proponuję przeczytać "C++ GUI Programming with Qt 4 (2nd Edition)" od Jasmin Blanchette.
Kluczowa różnica między QGuiApplication i QApplication książka ta nie obejmie jednak, gdyż jest o Qt 4 i QGuiApplication został wprowadzony w Qt5. –
@FrankOsterfeld Wspomniałem o różnicy między QApplication, QGuiApplication i QCoreApplication od http://www.qtcentre.org/threads/60203. Czy znasz dobrą książkę Qt5? – Ho1