CLX: Message an jedes Control senden
-
Hallo,
bisher sende ich mit folgender rekursiven Methode eine Qt-Nachricht an alle Controls (Fensterelemente) meiner Applikation:
void ControllerViMo::broadcast(TWidgetControl* p_twidgetc, QCustomEventH* p_event) {//Broadcast via rekursivem Abstieg if (this->p_hauptfenster != NULL) { //Dieses Fenster beschiessen QApplication_sendEvent(p_twidgetc->Handle, p_event); //seine Kinder beschiessen for (int i= 0; i < p_twidgetc->ComponentCount; ++i) {//ueber alle direkten Komponenten if (TWidgetControl* twc= dynamic_cast<TWidgetControl*>(p_twidgetc->Components[i])) { //Absteigen broadcast(twc, p_event); }//war es ein TWidgetControl? }//ueber alle Componenten }//if p_hauptfesnter valid }//broadcastDas Problem hierbei ist, dass sich währende dem Senden der Nachrichten die Anzahl der Fenster ändern.
- Gibt es vielleicht eine native Methode dazu?
- normalerweise kommen die Nachrichten in einem Puffer und sollten erst nachher empfangen werden, wieso rennt er jetzt schon bei QApplication_sendEvent() in den Event-Handler der Controls?
Danke!