2016-04-30 13 views
5

Qt projemi derlediğimde aşağıdaki hata oluştu mu?QApplication olmadan bir QWidget oluşturulamıyor

QWidget: Cannot create a QWidget without QApplication 

Sorun nedir?

main.cpp

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

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

cevap

6

Çok açık. QWidget'a sahip olmak için QApplication'a ihtiyacınız vardır. QGuiApplication'u QApplication olarak değiştirin ve kod düzgün çalışacaktır. "QApplication, QGuiApplication ve QCoreApplication gibi ağaç ana sınıfları vardır Neden"

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

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

Eğer bilmek istiyorsanız

, this bakın. Şöyle ki:

QCoreApplication taban sınıfı, QGuiApplication pencere ve GUI şeyler (non-Widget ilgili, örneğin OpenGL ya QtQuick) işleme ilişkin işlevselliği ile taban sınıfını genişleten olduğunu QApplication ilgili işlevselliği ile QGuiApplication uzanır widget'ları ele almak.

BTW, Qt Creator'da mevcut temel örnek değil midir? Qt'yi öğrenmek için bir kitaba ihtiyacınız var ve ben Jasmin Blanchette'den "C++ GUI Programlama Qt 4 (2nd Edition)" yazmanızı tavsiye ediyorum.

Qt Book

+1

o Qt 4 ilgilidir ve QGuiApplication Qt5 tanıtıldı olarak bu kitap, gerçi kapsamaz QGuiApplication ve QApplication arasındaki önemli fark. –

+0

@FrankOsterfeld QApplication, QGuiApplication ve QCoreApplication arasındaki farkı http://www.qtcentre.org/threads/60203 adresinden değindim. İyi bir Qt5 kitabı biliyor musunuz? – Ho1

4

sadece ana içinde QApplication için QGuiApplication değişmelidir. QGuiApplication Class Description itibaren

: Bu QWidget örneklerini oluşturmak için gerekli bazı işlevleri sağlar olarak

QWidget tabanlı Qt uygulamalar için

, yerine QApplication kullanın.