2016-04-30 17 views
5

私のqtプロジェクトをコンパイルすると以下のエラーが表示されますか?QApplicationなしでQWidgetを作成できません

QWidget: Cannot create a QWidget without QApplication 

何が問題ですか?

MAIN.CPP

#include<QApplication> 
#include"MainWindow.h" 

int main(int argc, char *argv[]) 
{ 
    QGuiApplication app(argc, argv); 
    MainWindow w; 
    w.show(); 
    return app.exec(); 
} 

答えて

6

明らかです。 QWidgetにはQApplicationが必要です。 QGuiApplicationQApplicationに変更すると、コードは正常に動作します。 「はQApplication、QGuiApplicationとQCoreApplicationのような木の主なクラスがあるのはなぜ」

#include<QApplication> 
#include"MainWindow.h" 

int main(int argc, char *argv[]) 
{ 
    QApplication app(argc, argv); 
    MainWindow w; 
    w.show(); 
    return app.exec(); 
} 

を知りたい場合は

thisを参照してください。それは言う:

QCoreApplicationは、基本クラスで、QGuiApplicationは窓やGUIのもの を(非ウィジェット関連、例えばOpenGLのかQtQuick)の取り扱いに関連する機能を持つ基本 クラスを拡張し、はQApplicationは、機能関連で QGuiApplicationを拡張しますウィジェットを処理する。

Btwは、Qt Creatorで利用できる基本的な例ではありませんか? Qtを学ぶための本が必要です.Jasmin Blanchetteの "C++ GUI Programming with Qt 4(2nd Edition)"を読むことをお勧めします。

Qt Book

+1

それはQtの4程度であり、QGuiApplicationはQt5で導入されたこの本は、しかしカバーしていますQGuiApplicationとはQApplicationの間に決定的な違い。 –

+0

@FrankOsterfeld http://www.qtcentre.org/threads/60203のQApplication、QGuiApplicationとQCoreApplicationの違いについて述べました。あなたは良いQt5の本を知っていますか? – Ho1

4

あなたがメインでQApplicationQGuiApplicationを変更する必要があります。 QGuiApplication Class Descriptionから

:それ はQWidgetのインスタンスを作成するために必要ないくつかの機能を提供して

QWidgetのベースのQtアプリケーションの場合

が、代わりにはQApplicationを使用しています。

関連する問題