QWizard-Widget erzeugen in Nicht-GUI Thread schlägt fehl

Alles rund um die Programmierung mit Qt
Antworten
TBerger
Beiträge: 27
Registriert: 12. März 2007 09:47
Wohnort: Karlsruhe

QWizard-Widget erzeugen in Nicht-GUI Thread schlägt fehl

Beitrag von TBerger »

Hallo,

ich benutze zum Ausführen meiner CppUnit-Testcases die QXRunner GUI. Allerdings habe ich bei einem Testcase ein Problem:
ASSERT failure in QWidget: "Widgets must be created in the GUI thread.", file kernel\qwidget.cpp, line 937
Und zwar tritt die Exception auf, wenn ich in meinem TestCase diesen Code aufrufe:

Code: Alles auswählen

void PageTests::setUp() {
	mWizard = new SwampInstallWizard(0);
}
SwampInstallWizard hat folgenden Konstruktor:

Code: Alles auswählen

SwampInstallWizard::SwampInstallWizard(QWidget *parent) :
	QWizard(parent) {
...
}
Wenn ich nicht QXRunner benutze, sondern die konsolenbasierte Ausgabe von CppUnit benutzte tritt diese Exception nicht auf.

Ich mache selbst keinen eigenen Thread auf, um die Testcases auszuführen, o.ä.

Kann mir jemand weiterhelfen? Ist das ein bekanntes Problem beim QWizard? Oder habe ich einen Denkfehler`?

Viele Grüße,
Thomas
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

QWizard ist in QtGui - wenn keine QApplication-Instanz da ist, dann auch keine Gui-Funktionaliät.
Also scheint CppUnit QApplication zu instanziieren, QXRunner nicht.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
TBerger
Beiträge: 27
Registriert: 12. März 2007 09:47
Wohnort: Karlsruhe

Beitrag von TBerger »

Hi,

danke für die Antwort. Allerdings ist das trotzdem verwunderlich, da ich immer als erstes in meiner main-Methode eine QApplication Instanz erzeuge. Erst danach erzeuge ich wahweise den konsolenbasierten CppRunner oder eben den grafischen QxRunner. Okay, QxRunner zeigt zwar selbst eine GUI, die Ausführung wird aber wohl durch eine Nicht-GUI-Klasse asynchron angestoßen. Kann man da irgendwas machen?
TBerger
Beiträge: 27
Registriert: 12. März 2007 09:47
Wohnort: Karlsruhe

Beitrag von TBerger »

Hallo,

kennt denn sonst niemand das Problem? Ich habe jetzt gemerkt, dass es nicht am Qwizard liegt, sondern seit Qt 4.3.4 das Problem bei allen Widgets in Verbindung mit QxRunner auftritt. In früheren Versionen hatte ich nicht das Problem.
Mit QApplication hat es wie vermutet natürlich nichts zu tun, denn diese Instanz ist vorhanden, ich kann ja auch mit dem qApp Makro ohne Probleme darauf zugreifen.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Vielleicht mal bei QxRunner nachfragen - scheint hier keiner zu benutzen. Die News sind auch 'etwas' outdated. Und das hier ist lustig:
22. Jan. 2007 QxRunner built with a Qt version 4.1.x will not run properly with dynamic libraries of Qt versions 4.2.x. Won't crash but GUI will behave incorrectly.
Und Du wunderst Dich warum es nicht mit Qt 4.3.x geht :)
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten