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
    }//broadcast
    

    Das 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!


Anmelden zum Antworten