QGroupBox Widget Position

Alles rund um die Programmierung mit Qt
Antworten
jd
Beiträge: 130
Registriert: 22. Januar 2008 17:55

QGroupBox Widget Position

Beitrag von jd »

Hallo Gemeinde,

Ich habe eine QGroupBox die n viele QWidgets beinhaltet. Ich habe das Problem, das es einfach hässlich aussieht. Derzeit sieht das ganze so aus:
http://imageupload.com/~imageupl/show.p ... 1.png.html

Ich will das aber so hin biegen, das es so aussieht: http://imageupload.com/~imageupl/show.p ... 2.png.html

Natürlich ohne das MainWindow zu verkleinern.

Mein Code für die Ansicht die "hässlich" ist:

Code: Alles auswählen

QGridLayout *diskSpaceGridLayout = new QGridLayout;

// Begin - Schleife
hddProgressBar[i]->setMaximumSize(200, 20);
hddIconLabel[i]->setPixmap(QPixmap(":/images/harddisk.png"));
hddInfoLabel[i]->setText(infoText);
hddIconLabel[i]->setWordWrap(true);
diskSpaceGridLayout->addWidget(hddIconLabel[i], i, 0);
diskSpaceGridLayout->addWidget(hddProgressBar[i], i, 1);
diskSpaceGridLayout->addWidget(hddInfoLabel[i], i, 2);
// End - Schleife
Das layout habe ich dann der GroupBox zugewiesen.

Wie kann ich ganze so hin quetschen, das nicht mehr solche übertrieben großen Zwischenräume mehr habe?

so long
jd
PeterLustig
Beiträge: 386
Registriert: 21. November 2007 20:07

Beitrag von PeterLustig »

Mach die GroupBox kleiner. Die Widgets dürfen nicht höher sein als 20, aber die GroupBox ist sehr viel größer als 5x20. Also muss eben ein Freiraum dazwischen..
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Und / oder bau einen expanding QSpacer unten rein wie ich es im designer meist mache.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Beschäftigt euch beide mal mit Layouts...
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Sollen die Widgets in der Groupbox nur zusammenrücken, dann füge das NACH deiner Schleife ein:

Code: Alles auswählen

diskSpaceGridLayout->setRowStretch(i+1,1);
i muss einen größer sein, als die Rows die Du hinzugefügt hast.

Soll die GroupBox kleiner sein, dann nimm ein QSpacerItem im Layout vom Mainwindow.
Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.
PeterLustig
Beiträge: 386
Registriert: 21. November 2007 20:07

Beitrag von PeterLustig »

Nach seinem Bild zu urteilen hat er garkein Layout im Hauptfenster, darum soll er die Groupbox einfach kleiner machen. Besser wär natürlich wenn er dort auch ein geeignetes Layout einbaut..
jd
Beiträge: 130
Registriert: 22. Januar 2008 17:55

Beitrag von jd »

Ich denke ich habe da ein Layout. In meinem QMainWindow habe ich ein CentraWidget, in diesem Widget ist main Layout(ist ein QGridLayout) in diesem Layout werden nun alle GroupBoxes platziert. Die GroupBox (siehe Screenshot) Muss sich automatisch anpassen. Da ich nie weiß wie viele rows dort sind. Nur eins ist fix das ich 3 Colums habe (logo->progressBar->infoText). Ich habe das jetzt irgendwie hin bekommen, das es nach meinen Wunsch aussieht, was ich aber mehr oder weniger auf Try&Error belief. Also ich weiß nicht wirklich was ich da gemacht habe.

Als erstes habe ich bei der Progressbar die Min und Max größe gleich gesetzt:

Code: Alles auswählen

hddProgressBar[i]->setMaximumSize(200, 20);
hddProgressBar[i]->setMinimumSize(200, 20);
So mit haben die schon mal eine Größe die Fix ist.

Dann habe ich einfach main Hauptlayout (falls das eins ist) verändert, da ich im Moment nur eine GroupBox habe, habe ich das so gemacht.

Code: Alles auswählen

layoutGridLayout->setRowStretch(1, 1);
layoutGridLayout->setColumnStretch(1, 1);
So passt sich auch die GroupBox an.

Und so setze ich das Layout:

Code: Alles auswählen

centralwidget->setLayout(layoutGridLayout);

Ich weiß nur nicht ob das der Optimale weg ist, da ich nicht wirklich verstehe was ich da mache, denke ich mal das es "klump" ist.

Ich habe mir die Docu zu Layouts durch gelesen, da es aber anscheinend unendlich Wege gibt ans ziel zu gelangen steige ich da irgendwie nicht durch. Habt ihr Verbesserungen für mich, oder mal ein Beispiel? Ich meine Code über Layout lesen ist die eine Sache, aber was visuelles ist da denke ich mal ehr von Vorteil ich kann mir unter Stretch oder Verhalten von Spacern einfach nichts vorstellen, weiß zwar wie ich es schreiben muss, bringt mir aber nicht viel, wenn ich nicht weiß was raus kommt.

so long
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

jd hat geschrieben:Ich meine Code über Layout lesen ist die eine Sache, aber was visuelles ist da denke ich mal ehr von Vorteil ich kann mir unter Stretch oder Verhalten von Spacern einfach nichts vorstellen,
Man muss den Designer nicht nutzen, bei variablem GUI geht es auch gar nicht, aber zum testen ist er unschlagbar.
Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.
Antworten