Seite 1 von 1

Qt4 DLL mit Thread und Http Objekt in einer nicht Qt Appl.

Verfasst: 5. April 2006 09:45
von mbreitinger
Hallo,

ich will eine alte nicht Qt Anwendung mit einer DLL erweitern, welche ich mit Qt4.1.1 implementiert habe. Der Thread läuft und das Http Objekt wird angelegt, allerdings wird kein Event in dem exec()-Aufruf in der run()-Methode meines Threads abgearbeitet.

Was muß ich ändern? Bei dem Versuch eine QEventLoop zu verwenden, hat diese verlangt, daß ein QApplication Objekt existieren muß.

Re: Qt4 DLL mit Thread und Http Objekt in einer nicht Qt App

Verfasst: 5. April 2006 11:27
von Shadow
mbreitinger hat geschrieben:Hallo,

ich will eine alte nicht Qt Anwendung mit einer DLL erweitern, welche ich mit Qt4.1.1 implementiert habe. Der Thread läuft und das Http Objekt wird angelegt, allerdings wird kein Event in dem exec()-Aufruf in der run()-Methode meines Threads abgearbeitet.

Was muß ich ändern? Bei dem Versuch eine QEventLoop zu verwenden, hat diese verlangt, daß ein QApplication Objekt existieren muß.
Jede DLL hat ihre eigene Event-Schleife, insbesondere die QT-Plugins, daher bekommt deine Hauptapplikation auch nichts von dem Event mit. Dies wirst du auf dem Wege nicht lösen können. Vielleicht tut es das, indem du eine eine Funktion schreibst, die die Hauptapplikation benachrichtigt, bzw. dort den Event auslöst?!

Lösung

Verfasst: 6. April 2006 10:49
von mbreitinger
Nach einigem Tüfteln habe ich herausgefunden, daß ich die Objekte, deren SLOTS im neuen Workerthread bearbeitet werden sollen, aus dem erzeugenden Thread heraus mit moveToThread in den Workerthread verschieben muß. Danach ist es egal wie die Anwendung geschrieben ist; die neue Erweiterung läuft komplett mit den Möglichkeiten von Qt.

Re: Lösung

Verfasst: 6. April 2006 11:02
von Shadow
mbreitinger hat geschrieben:Nach einigem Tüfteln habe ich herausgefunden, daß ich die Objekte, deren SLOTS im neuen Workerthread bearbeitet werden sollen, aus dem erzeugenden Thread heraus mit moveToThread in den Workerthread verschieben muß. Danach ist es egal wie die Anwendung geschrieben ist; die neue Erweiterung läuft komplett mit den Möglichkeiten von Qt.
Ok, ich habe das etwas falsch verstanden. Jetzt weiß ich, was du meintest.