PDA

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 :)