[Gelöst] QVBoxLayout Widget nach oben hin ausrichten

Alles rund um die Programmierung mit Qt
Antworten
bierber
Beiträge: 72
Registriert: 27. November 2006 14:12

[Gelöst] QVBoxLayout Widget nach oben hin ausrichten

Beitrag von bierber »

Hallo,

ich versuche gerade ein QVBoxLayout so zu befüllen, das die Layouts nicht am Center ausgerichtet werden sondern an der Oberkante.

Hierfür habe ich folgendes gemacht.

Deklarieren von 2 QVBoxLayouts, die in ein QHBoxLayout eingebttet werden.(HBoxLayout ist ganze Form größe, die 2 VBoxLayouts teilen sich 50% der Fläche)

Code: Alles auswählen

	
lHLayout = new QHBoxLayout(this);

lVLayout_Name = new QVBoxLayout();
lVLayout_Data = new QVBoxLayout();
lHLayout->addLayout(lVLayout_Name,1);
lHLayout->addLayout(lVLayout_Data,1);

Einbinden der Widget's in das jeweilige BoxLayout:

Code: Alles auswählen

lVLayout_Name->addWidget(lbNbrWelds,1,Qt::AlignTop);
Ich bin nun eigentlich davon ausgegangen, das durch das Qt::AlignTop, die Widgets von oben her angeordnet werden. Leider werden sie immer noch von der Mitte her gefüllt:

Also Ein Widget liegt genau in der Mitte des Layouts

Bei 2 Widgets liegt das erste etwa 1/3 unterhalb der Oberkante des Layouts und das zweite Widget etwa 2/3 unterhalb der Oberkante des Layouts.

Ich möchte aber das die Widgets von oben her angeordnet werden, also 5px vom oberen Rand, dann das Widget, dann das nächste Widget wieder 5px vom letzten Widget und so weiter. So füllt sich das Layout dann von oben her langsam auf.

Hab ich da einen Denkfehler oder kann das QBoxLayout das gar nicht so wie ich das möchte?

Gruß und Danke
Felix
Zuletzt geändert von bierber am 29. Januar 2015 14:56, insgesamt 2-mal geändert.
odt
Beiträge: 128
Registriert: 12. August 2010 11:49
Kontaktdaten:

Re: QVBoxLayout Widget nach oben hin ausrichten

Beitrag von odt »

ich habe Deine Frage nicht ganz gelesen/verstanden, aber vielleicht hilft ein

Code: Alles auswählen

lVLayout_Name->addStretch( 1 );
wobei das 1 beim vorherigen .. vermutlich ein 0 sein sollte.

Code: Alles auswählen

lVLayout_Name->addWidget(lbNbrWelds,[b]1[/b],Qt::AlignTop);
ODT Informatik GmbH, Reto Tschofenig
bierber
Beiträge: 72
Registriert: 27. November 2006 14:12

Re: QVBoxLayout Widget nach oben hin ausrichten

Beitrag von bierber »

Nein es geht ja nicht um die Stretch Faktoren, sondern um die Anordnung der Widgets auf dem Layout.

Den Stretch Faktor lege ich ja beim hinzufügen der Widgets bereits auf 1.
odt
Beiträge: 128
Registriert: 12. August 2010 11:49
Kontaktdaten:

Re: QVBoxLayout Widget nach oben hin ausrichten

Beitrag von odt »

Das Layout versucht den ganzen Platz auszunutzen, d.h. er verteilt die Widgets gemäss den Stretch-Faktoren gleichmässig. Wenn alle Stretch-Faktoren gleich sind, gibt es das von Dir beschriebene Verhalten. Wenn Du die Widgets mit Stretch=0 einfügst und anschliessend layout->addStretch( 1 ) addest, vergibt er den überschüssigem Platz dem nicht sichtbaren Stretch-Item und die Widgets werden von oben angeordnet.

Code: Alles auswählen

	QHBoxLayout* root = new QHBoxLayout( this );
	QVBoxLayout* spalte1 = new QVBoxLayout();
	root->addLayout( spalte1, 1 );
	QVBoxLayout* spalte2 = new QVBoxLayout();
	root->addLayout( spalte2, 1 );
	spalte1->addWidget( new QLabel( "1" ) );
	spalte1->addWidget( new QLabel( "2" ) );
	spalte1->addStretch( 1 );
	spalte2->addWidget( new QLabel( "3" ) );
	spalte2->addWidget( new QLabel( "4" ) );
	spalte2->addWidget( new QLabel( "5" ) );
	spalte2->addWidget( new QLabel( "6" ) );
	spalte2->addStretch( 1 );
ODT Informatik GmbH, Reto Tschofenig
bierber
Beiträge: 72
Registriert: 27. November 2006 14:12

Re: QVBoxLayout Widget nach oben hin ausrichten

Beitrag von bierber »

Ah jetzt hab ichs verstanden.

Danke!
Antworten