Seite 1 von 1

setTitle() verändert ContentMargins der QGroupBox

Verfasst: 10. September 2007 22:10
von Maha
Ich benutz Qt 4.3.1

Das ist meine QGroupBox:

Code: Alles auswählen

testGB = new QGroupBox("Titel", this);
testGB ->setContentsMargins(0, 6, 0, 0);
testGL = new QGridLayout(testGB);
testGL->setVerticalSpacing(0);
testGL->setSizeConstraint(QLayout::SetFixedSize);
...
Sobald eine Funktion

Code: Alles auswählen

testGB->setTitle("neuer Titel");
aufruft, werden die oben gesetzten "ContentsMargins(0, 6, 0, 0)" verändert.

Ich kann das Problem zwar lösen, indem ich nach jedem

Code: Alles auswählen

testGB->setTitle("neuer Titel);
nochmal

Code: Alles auswählen

testGB->setContentsMargins(0, 6, 0, 0);
aufrufe, aber dieses Verhalten finde ich Quatsch.

Weiss jemand warum die Ränder nach Titeländerung verändert werden, bzw. kann das Verhalten jemand bestätigen?

Verfasst: 11. September 2007 07:22
von macman
Werden alle Margins geändert oder nur der obere? Das der sich ändern muss, sollte klar sein.

Verfasst: 11. September 2007 15:09
von Maha
Es werden blöderweise alle Randabstände verändert (in meinem Fall vergrößert), wobei der obere auf fast das doppelte wächst. Sieht beinahe wie eine Leerzeile aus.

btw: Wieso soll das für den oberen Randabstand klar sein? Vorher stand ein Titel drin und nach setTitle() steht ein anderer drin. Wozu muss sich der obere Randabstand da ändern?

Verfasst: 11. September 2007 15:48
von macman
Maha hat geschrieben:Es werden blöderweise alle Randabstände verändert (in meinem Fall vergrößert), wobei der obere auf fast das doppelte wächst. Sieht beinahe wie eine Leerzeile aus.
Sieht nach einem Bug aus. Wenn ich die Margins im Designer setze, bleiben sie so. Wenn das setContentsMargin nach dem setTitle kommt, dann passt es auch. Könnte auch hiermit zu tun haben:
http://trolltech.com/developer/task-tra ... &id=129998
Wäre nicht der erste Bug, der nach einem Fix wieder auftaucht.
Maha hat geschrieben:btw: Wieso soll das für den oberen Randabstand klar sein? Vorher stand ein Titel drin und nach setTitle() steht ein anderer drin. Wozu muss sich der obere Randabstand da ändern?
Ich bin von einem leeren Title ausgegangen.