[gelöst] In QVBoxLayout mehrmals dasselbe Layout

Alles rund um die Programmierung mit Qt
Antworten
ChornHulio
Beiträge: 62
Registriert: 7. November 2008 11:02

[gelöst] In QVBoxLayout mehrmals dasselbe Layout

Beitrag 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!
Zuletzt geändert von ChornHulio am 29. August 2009 16:26, insgesamt 1-mal geändert.
archer
Beiträge: 306
Registriert: 2. Februar 2006 09:56

Beitrag von archer »

Ich meine du musst layoutEtage bei jedem Durchlauf neu erzeugen,
damit es auch 10 mal da ist.
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag 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
ChornHulio
Beiträge: 62
Registriert: 7. November 2008 11:02

Beitrag 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 :(
archer
Beiträge: 306
Registriert: 2. Februar 2006 09:56

Beitrag 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.
ChornHulio
Beiträge: 62
Registriert: 7. November 2008 11:02

Danke!

Beitrag 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...
ChornHulio
Beiträge: 62
Registriert: 7. November 2008 11:02

Ging nicht

Beitrag 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!
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten