QWidgets: Signale an Parent...
Verfasst: 17. November 2010 08:20
Hallo Gemeinde!
Zu meinem "Problem":
Ich habe ein CustomWidget ("my_widget") erzeugt, dass ich manuell/dynamisch mit
erzeuge und anschließend einem (vertikalen) Layout hinzufüge:
Die wird zur Laufzeit des öfteren gemacht, so dass mir das Layout als Container für z.B. 30 my_widget()´s dient, die untereinander angeordnet sind.
Hier taucht auch gleich meine 1. Frage auf:
Ich weiß, dass ich 30 my_widget() im Layout habe. Wie iteriere ich über diese bzw. wie kann ich sie auslesen? Im Moment speichere ich die Adressen aller my_widgets() zwischen und verwalte diese über einen std::vector<unsigned int>. Da gibt es doch garantiert eine elegantere Möglichkeit?
Zu einem späteren Zeitpunkt in der Applikation wird das relativ große Layout einem neuen QWidget namen "Mgr" übergeben und dieses Widget in eine QScrollArea gehängt, damit der User über alle my_widget() scrollen kann..
Das my_widget() beherbergt einige Knöpfe und Schalter.
Und damit kommen wir zur 2. Frage:
Ich möchte ganz gerne, dass das Fenster, das die ScrollArea verwaltet, auf die Signale dieser Buttons reagiert. Wenn z.B. ein Knopf gedrückt wird, soll z.B. die Hintergrundfarbe des Fensters geändert werden.
Wie verbinde ich das clicked()-Signal mit dem (Main-)Fenster (zur Laufzeit des Programmes?) Geschieht dies auch über die connect()-Anweisung?
Kurz noch die Struktur:
Ich müsste also das ausgesendet Button-clicked()-Signal bis hinauf zum QDialog-Fenster durchreichen oder? Wie realisiert man dies?
Vielen Dank im Voraus für eure Hilfe.
Zu meinem "Problem":
Ich habe ein CustomWidget ("my_widget") erzeugt, dass ich manuell/dynamisch mit
Code: Alles auswählen
my_widget = new my_widget();Code: Alles auswählen
ui->vertLayout->addWidget(my_widget);Hier taucht auch gleich meine 1. Frage auf:
Ich weiß, dass ich 30 my_widget() im Layout habe. Wie iteriere ich über diese bzw. wie kann ich sie auslesen? Im Moment speichere ich die Adressen aller my_widgets() zwischen und verwalte diese über einen std::vector<unsigned int>. Da gibt es doch garantiert eine elegantere Möglichkeit?
Zu einem späteren Zeitpunkt in der Applikation wird das relativ große Layout einem neuen QWidget namen "Mgr" übergeben und dieses Widget in eine QScrollArea gehängt, damit der User über alle my_widget() scrollen kann..
Code: Alles auswählen
Mgr->setLayout(ui->vertLayout);Code: Alles auswählen
ui->my_ScrollArea->setWidget(Mgr);Und damit kommen wir zur 2. Frage:
Ich möchte ganz gerne, dass das Fenster, das die ScrollArea verwaltet, auf die Signale dieser Buttons reagiert. Wenn z.B. ein Knopf gedrückt wird, soll z.B. die Hintergrundfarbe des Fensters geändert werden.
Wie verbinde ich das clicked()-Signal mit dem (Main-)Fenster (zur Laufzeit des Programmes?) Geschieht dies auch über die connect()-Anweisung?
Kurz noch die Struktur:
Code: Alles auswählen
QDialog
|
|--- QScrollArea
|
|--- ScrollAreaWidgetContent
|
|--- QVBoxLayout
|
|--- QWidget ("Mgr")*
|
|--- QWidget("my_widget")*
|--- QWidget("my_widget")*
|--- QWidget("my_widget")*
...
* = zur Laufzeit erstellt (alles andere via Designer)
Vielen Dank im Voraus für eure Hilfe.