Seite 1 von 1

[gelöst] In QVBoxLayout mehrmals dasselbe Layout

Verfasst: 25. August 2009 22:00
von ChornHulio
Hallo zusammen,

ich nerve euch mal wieder - muss hier auch grad mal sagen: Ihr seid einsame Spitze! Ohne euch bräuchte ich gleich nochmal doppelt solange bei meinem Projekt :roll:

Also genug geschleimt, jetzt zu meinem Problem:

Ich will in einem QVBoxLayout mehrmals das selbe Layout anzeigen: Hier mein Code:

Code: Alles auswählen

 for(int i = 10; i > 0; i--)                                           //alle Stockwerke durch dasselbe
 {
        layoutStockwerke->addStretch(1);               //Spacer oben
        layoutStockwerke->addItem(layoutEtage);   //Etage
        layoutStockwerke->addStretch(1);               //Spacer unten
}
Das funktioniert aber nicht so wie ich gedacht habe. Es wird nur einmal durchgeführt. Nur in einem Stockwerk wird es richtig angezeigt. Es zeigt aber auch keine Fehlermeldungen etc.

Wenn ich dem layoutStockwerke per insertItem sozusagen ein Layout mit Index jedes mal aufdrücke, meckert es rum, dass QBoxLayout::insertItem(...) protected sei - verstehe ich nicht was das soll...

Was mach ich falsch? Kann mir jemand helfen? Danke!

Verfasst: 26. August 2009 08:05
von archer
Ich meine du musst layoutEtage bei jedem Durchlauf neu erzeugen,
damit es auch 10 mal da ist.

Verfasst: 26. August 2009 09:07
von solarix
Wenn ich dem layoutStockwerke per insertItem sozusagen ein Layout mit Index jedes mal aufdrücke, meckert es rum, dass QBoxLayout::insertItem(...) protected sei - verstehe ich nicht was das soll...
Gleiches gilt auch für "add": wenn du ein Layout einfügen möchtest, warum fügst du dann ein Item ein und nicht ein Layout?
http://doc.trolltech.com/4.5/qboxlayout ... sertLayout

Verfasst: 26. August 2009 20:36
von ChornHulio
Das mit dem insertItem war ein versehen, aber egal wie bringt es nichts.

Aber ich verstehe das nicht! Ich habe jetzt auch versucht QHBoxLayout-Zeiger, die allesamt auf das Orginal zeigen, dem layoutStockwerke hinzuzufügen. Das geht auch nicht - er meldet, dass das Layout schon ein ChildLayout hat. Wieso wird das unterbunden? Gibt es dafür einen Grund?

Hat sonst noch jemand eine Idee wie ich das machen könnte?

Sonst muss ich 3 * 10 einzelne QHBoxLayouts erstellen, die alle die selben Labels enthalten. Und diese muss ich nicht nur erstellen, ich muss sie ja auch noch alle paar Sekunden alle ändern... Viel Schreibarbeit und macht den Code noch unleserlicher :(

Verfasst: 27. August 2009 08:08
von archer
Mach dir ein Widget mit den Labels und dem HBoxLayout, erzeuge es 10mal und tu diese in dein Hauptlayout. Dann Hast du 10 mal oder 3*10 mal, wie auch immer, dieselben Labels mit denselben Inhalten und hast wenig schreibarbeit.
So würde ich das machen.

Danke!

Verfasst: 28. August 2009 06:56
von ChornHulio
Also statt als Layout verwenden, nochmals in ein Widget packen und dann verwenden. Hört sich gut an! Danke! Ich werds heut abend gleich ausprobieren...

Ging nicht

Verfasst: 29. August 2009 16:26
von ChornHulio
Das hat alles nichts funktioniert. Ich musste alle Labels und alle Layouts einzel erstellen und verwalten. Denn wenn ich ein Label einem Layout hinzufüge, gehört das Label NUR dem Layout. Genau das gleiche gilt für ein Layout oder Widget einem anderen Layout oder Widget hinzufügen.
Warum das Qt so will ist für mich fraglich, aber da kann man wohl nix machen.

Danke trotzdem für eure Antworten!

Verfasst: 29. August 2009 16:37
von Christian81
Ein Widget und ein Label müssen nunmal unique sein. Und die Möglichkeit mit dem ableiten ist ja nun wirklich nicht so schwer. Des weiteren hätte man sie schön in einen Container packen können falls der Zugriff darauf sont zu umständlich wird...