2017-01-26 3 views
-1

Ich habe ein einfaches QT Projekt zu instanziiert, die wie folgt aussieht:QT Programm segfaults bei dem Versuch, QWidget

#include <QtWidgets/qwidget.h> 

TempClass::TempClass() { 
    QWidget* tempWidget = new QWidget(); 
} 

Alles kompiliert gut, aber wenn ich versuche, das Programm es Segfaults auf der Linie laufen zu lassen, die einen instanziiert neues QWidget. FYI Ich benutze QT 5.7.1.

+3

Das ist wahrscheinlich nicht genug Informationen. Erstellen Sie eine 'QApplication' oder' QCoreApplication'? –

+0

Es ist eine QGuiApplication: QGuiApplication App (argc, argv); (in main.cpp) – user1765354

+1

Wenn dies unter Windows ist, stellen Sie sicher, dass der von Ihnen verwendete Compiler derselbe ist (einschließlich der Version, wenn Sie Visual Studio verwenden), während Qt erstellt wurde. Stellen Sie außerdem sicher, dass sich die richtigen .dlls in Ihrem Pfad befinden. Wenn die falsche Version von Qt-Binärdateien verwendet wird, wird ein Absturz erwartet. – drescherjm

Antwort

0

Das Problem hier war, dass ich meine Anwendung als QGuiApplication vs. QApplication instanziiert. Sobald ich den Code in den folgenden geändert habe, instanziiert mein QWidget richtig:

QApplication app(argc, argv);