Archiv verlassen und diese Seite im Standarddesign anzeigen : Qt - QThread, Signals und Slots
Christian81
20-05-2003, 16:53
Hallo
Kann ich von einen Subthread aus ein SLOT von dem Parent des Threads aus aufrufen. Praktisch geht es auch - aber nur unter Linux. Windows weigert sich standhaft dies auszuführen
in etwa sieht es so aus:
- der Parent bietet einen public slot
- der child-Thread ruft per QTimer::singleShot(parent,...) den Slot auf, was ja auch unter Linux klappt, nur eben nicht unter Windows
Hat einer eine Ahnung oder eine Idee, wie man es besser machen kann?
anda_skoa
20-05-2003, 17:29
Ist der Parent auch in einem extra Thread oder wird er von der Eventloop bearbeitet?
Ciao,
_
Christian81
20-05-2003, 20:33
Der Parent ist nicht in einer extra eventloop, er wird einfach vom Hauptfenster aus aufgerufen (modaler Dialog).
anda_skoa
20-05-2003, 20:44
Original geschrieben von Christian81
Der Parent ist nicht in einer extra eventloop, er wird einfach vom Hauptfenster aus aufgerufen (modaler Dialog).
Ja, das meinte ich mit Eventloop :)
Hmm, ist also der richtige Kontext.
Probiere es mit QApplication::postEvent oder ::sendEvent
Wenn du dafür ein QCustomEvent nimmst, brauchst du in Parent nur customEvent() zu überschreiben, um es zu empfangen.
Ciao,
_
Christian81
20-05-2003, 21:55
Danke, es funktioniert :)
Ich finde es zwar etwas overkill, aber egal
im child-Threa erzeuge ich ein custom event und schicke es an den Parent
QCustomEvent* ce = new QCustomEvent(12345);
postEvent(FParent,ce);
und fange es in Parent in der von dir vorgeschlagenen Funktion customEvent() auf
parent::customEvent(QCustomEvent* AEvent) {
if (AEvent->type() == 12345) {
das, was ich machen will :)
}
}
Allerdings ist wohl 12345 nicht so gut gewählt - ich sollte wohl irgend eine Zahl nehmen die auf alle Fälle nicht belegt ist, aber da muss ich erst mal noch schauen...
Thx :)
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.