Seite 1 von 1

QT4 Designer - gleiche Widgets in Array

Verfasst: 7. Dezember 2008 23:02
von mase
Hallo!
Ich habe in einem, mit QT4 Designer erstellten Fenster 14 Statusbars
angeordnet. Diese tragen die Namen StatusBar0 - StatusBar13.
Um ihre Werte zu setzen wird ein Slot aufgerufen, der ein Signal
mit einem std::vector<unsigned> empfängt. In diesem Vector sind
die 14 Werte für die Statusbars.
Momentan find ich keine bessere Lösung, als 14mal die selben Zeilen
zu schreiben, wo eine StatusBar mit ihren korrespondierenden Element
aus dem Vector gesetzt wird.
Ich könnte auch einmalig einen std::vector<QStatusBar*> anlegen, und
diesen mit den 14 Statusbars füllen.
Noch besser wäre es aber, wenn es möglich wäre, wenn die Statusbars
bereits bei ihrer Erzeugung StatusBar[x] heissen würden. Würde ich
das Fenster von Hand programmieren, wäre dies wahrscheinlich kein
Problem, aber wie mach ich das im Designer?

Verfasst: 8. Dezember 2008 08:51
von VuuRWerK
Im Designer gar nicht, sowas macht man wenn schon im Code selber.

Gut Schuß
VuuRWerK ;)

Verfasst: 8. Dezember 2008 09:04
von upsala
Oder mit QObject::findChildren alle Widgets in eine Liste packen

Verfasst: 8. Dezember 2008 09:05
von VuuRWerK
Wo wir wieder im Code wären und nicht mehr im Designer ;)

Gut Schuß
VuuRWerK ;)

Verfasst: 8. Dezember 2008 14:31
von mase
Na dann lass ich besser die 14 Zeilen stehen.

Verfasst: 8. Dezember 2008 15:44
von RHBaum
Na dann lass ich besser die 14 Zeilen stehen.
und an wieviel stellen musst du den code aendern, wenn jemand statt 14 dann doch 15 statusbars haben will ?
Bist du eigentlich sicher dass du Statusbars und ned Progressbars meinst, ich versuch mir grad nen widget mit 14 statusbars vorzustellen ! ^^

Also ehrlich, mit 14 waer bei mir die kritsiche masse zum copy & paste scho ueberschritten ...

Ich wuerd die 14 bars mit nem platzhalter widget im deinem designten Formular ersetzen, und in eigenem code die 14 widgets per code hinzufuegen und auch per code in dem widget layouten ...

Aber ich bin auch faul, geb ich ja zu ^^

einzig bissi trickige sache ist, wenn man die signale und slots zentral uber das uebergeordnete fenster laufen lassen muss, so das man nen handle eigentlich zu braucht ....

Ciao ...

Verfasst: 8. Dezember 2008 17:28
von pfid
Vorausgesetzt du hast 14 QLabels in deiner QStatusBar, wäre da nicht sowas wie

Code: Alles auswählen

   QObjectList list = statusBar->children();

   for (int i = 0; i < list.count(); i++)
   {
      QLabel* label = qobject_cast<QLabel*>(list.at(i));

      if (label)
         label->setText(vector.at(i));
   }
denkbar?