QMainWindow mit QDockWidget: Resize-Verhalten

Alles rund um die Programmierung mit Qt
Antworten
v01d
Beiträge: 7
Registriert: 3. November 2009 14:03
Wohnort: Hamburg

QMainWindow mit QDockWidget: Resize-Verhalten

Beitrag von v01d »

Hiho!

Leider habe ich seit Längerem ein Problem mit dem Resize-Verhalten von Hauptfenstern bei der Benutzung von 'QDockWidget::setVisible(bool)':

Nehmen wir an, ich habe ein QMainWindow mit den Abmaßen von 640x480. Auf der rechten Seite dieses Fensters habe ich über den Designer ein QDockWindow angebracht, welches eine preferierte Breite von 200 hat, aber initial unsichtbar ist. Im Hauptfenster befindet sich weiterhin eine QCheckBox, welche dieses QDockWindow (un)sichtbar schalten kann.

Schalte ich nun im Laufe der Applikation das QDockWidget sichtbar, vergrößert sich das Hauptfenster automatisch auf 840x480 Pixel. Schalte ich jedoch das QDockWidget danach wieder unsichtbar, bleibt die Größe des Hauptfensters konstant, so dass sich der Rest des Fenster nun auf die volle Breite zieht. Das Fenster soll in diesem Fall stattdessen aber wieder auf die vorherige Größe zurückschrumpfen.

Nun meine Frage: Gibt es dazu irgendeinen annehmbaren Workaround? Meine bisherigen Bemühungen waren leider bisher wenig fruchtbar.
Ich würde mich freuen, wenn mir hier jemand weiterhelfen könnte...
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag von AuE »

adjustSize() ??
v01d
Beiträge: 7
Registriert: 3. November 2009 14:03
Wohnort: Hamburg

Beitrag von v01d »

Ganz so einfach ist es leider nicht. Ich nehme an, Du beziehst Dich auf die Methoden 'QWidget::setGeometry()' bzw. ''QWidget::setSize'?

Was ich bisher versucht habe, ist mich an das Signal 'QDockWindow::visibilityChanged(bool)' zu hängen, um über obige Methoden das Fenster zu verkleinern - Fehlanzeige. Die einzige Methode, welche an dieser Stelle Erfolg hatte, war 'QWidget::setFixedWidth()', aber danach lässt sich die Größe des Fenster natürlich überhaupt nicht mehr skalieren.

Das Problem ist leider also immer noch offen :(

[/quote]
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag von AuE »

nein...ich meine wenn du die sichtbarkleit auf false geändert hast nen this->adjustSize() aufzurufen(also für das Widget was noch da ist)
Antworten