Seite 1 von 1
QCoreAppliaktion in einer dll
Verfasst: 15. Februar 2010 10:38
von flownfluid
Hallo Leute,
bis jetzt habe ich meine QT-Applikationen immer im main gestartet. Nun wird meine QCoreApplikation in einer lib aufgerufen und hier kann ich ja nicht die statische Methode exec() aufrufen.
Hat mir da jemand ein Lösungsvorschlag?
Vielen Dank
Verfasst: 15. Februar 2010 11:35
von Christian81
1. Warum muss die QCoreApplication in einer DLL gestartet werden?
2. Warum geht dann exec() nicht aufzurufen?
Verfasst: 15. Februar 2010 12:18
von flownfluid
Wir arbeiten an einem Projekt in der Schule, dort wird durch eine externes Prgramm, welches wir(Studenten) keinen Einfluss haben, eine Instanz meines Programmes kreiirt und dannach zyklisch eine Update Methode aufgerufen.
Nun da mein Programm mit QT und Signal/Slots benütze, brauche ich ja eine QCoreApp. Nun wenn ich die im Konstrukter kreiire und mit exec() starte, bleibt es ja im QT Eventloop hängen. Und somit wird ja die ganze Maschinerie von dem main- Programm gestopt.
Nun gibt es eine Möglichkeite dies irgendwie zu umgehen? Klar das einfachste wäre, wenn mir der Lehrer in seinem Programm schon ein QCoreApplikation starten würde. Aber so wie Lehrer halt sind, das möchte er einfach nicht. Wieso auch immer...

Verfasst: 15. Februar 2010 12:31
von Christian81
Sowas geht nicht bzw. nur sehr sehr umständlich. QCoreApplication muss das Hauptprogramm sein.
Verfasst: 15. Februar 2010 12:34
von AuE
Kann man nicht nen Thread starten? Der hat doch seine eigene Eventque oder?
Verfasst: 15. Februar 2010 14:17
von Christian81
Ein Qt-Thread ohne laufende Main-Qt-Eventloop? Keine Ahnung...
Verfasst: 15. Februar 2010 18:13
von MasterK
Wenn es nur um signals und slots geht, würden sich directconnections anbieten, die brauchen keine eventloop. Qt Threads haben keine eigene event loop. Man muss dann, wenn man in der DLL threads benutzt, die aufrufe selber synchronisieren.
Man könnte versuchen, in der DLL eine eigene Eventloop zu starten. Aber ob das den aufwand wert is... und dann is noch die frage, obs nicht probleme gibt wenn irgendwann doch mal eine qcoreapplication läuft.
Verfasst: 16. Februar 2010 09:28
von flownfluid
mir geht es eigentlich nur um die signal und slots... wie würde das mit den directconnections funktionieren?
Verfasst: 16. Februar 2010 14:37
von MasterK
Na, einfach:
Code: Alles auswählen
QObject::connect(p1, SIGNAL(foo()), p2, SLOT(bar()), Qt:DirectConnection);