must construct a qapplication before a qpaintdevice

Alles rund um die Programmierung mit Qt
Antworten
otternase
Beiträge: 62
Registriert: 25. Januar 2008 12:20

must construct a qapplication before a qpaintdevice

Beitrag von otternase »

Hallo

ich bekomme die im Betreff genannte Fehlermeldung, wenn ich folgendes simples Programm unter Windows ausführe (unter Linux funktioniert es problemfrei):

Code: Alles auswählen

#include <QApplication>
#include <QFile>
#include <QWidget>
#include <QSvgWidget>
#include <QDebug>
#include <QFileDialog>

 int main(int argc, char *argv[])
 {
     QApplication app(argc, argv);

     QString fileName = QFileDialog::getOpenFileName(0, "Datei oeffnen", "c:/Temp", "SVG Files (*.svg)");
     QSvgWidget *svgwidget=new QSvgWidget;
     svgwidget->load(fileName);
     svgwidget->show();
     
     return app.exec();
 }
Das Programm bricht nach dem Filedialog ab.
Wie kommt die Fehlermeldung zustande? Zu dem Zeitpunkt, zu dem svgwidget angelegt wird, ist app doch schon längst vorhanden?

Vielen Dank
Markus
pluto
Beiträge: 1
Registriert: 13. August 2008 15:58

Beitrag von pluto »

Hallo.

Ich hatte die gleichen Probleme. Bei mir wurden diese durch das Zusammenbauen von nicht kompatiblen Bibliotheken verursacht. Man kann nicht DLLs mit Debuginfos und DLLs ohne Debuginfos in einer Anwendung verwenden.

Ich hatte mir notiert:
"Obwohl die Kombination von CMake, C++ und Qt4 eine gute Grundlage für
Multiplattformanwendungen bietet, sind dennoch einige Probleme beim Erzeugen der Anwendung, vor allem unter Windows, aufgetreten. Diese Probleme traten weniger beim Compilieren, sondern vor allem beim Linken der
Anwendung, auf. Zur Lösung dieser Probleme mussten unter anderem etliche Linker­ und Compileroptionen in den CMake­-Skripten angepasst werden. Da die Anwendung einige Bibliotheken benutzt, erhöht sich die Zahl der Fehlerquellen. Ist die Bibliothek Qwt zum Beispiel im Release­Modus und die Monitoranwendung im Debug­Modus erzeugt worden, startet die Anwendung zwar, bricht später jedoch mit einer Fehlermeldung ab, welche keine direkten Rückschlüsse auf die Fehlerursache zulässt."

Man muss auch aufpassen das die QT und die MSVC*-DLLs zusammenpassen. Versuche erstmal alle DLLs im Debugmodus zu verwenden.

Gruß
Antworten