QSplitter und QDockWidget

Alles rund um die Programmierung mit Qt
Antworten
Wolferl2
Beiträge: 10
Registriert: 9. November 2008 00:54
Kontaktdaten:

QSplitter und QDockWidget

Beitrag von Wolferl2 »

Hallo,

ich habe irgendwie ein (bzw. zwei) Problem(e) mit meinem QMainWindow.

In meinem QMainWindow steckt ein QStackedWidget. Auf der ersten Seite sind naben dem Hauptfenster (eine Tabelle) zwei QDockWidgets:

Code: Alles auswählen

+-----------------------+
|                 |            |
|                 |     B     |
| Fenster A  +----1----|
|                 |            |
|                 2            |
|                 |     C     |
+-----------------------+

Wenn ich nun Fenster B abdocke (TopLevelChanged), vergrößere ich Fenster C mit setSizes vom Splitter 1. Wenn Fenster C abgedockt wird, so soll Splitter 2 ganz nach rechts geschoben werden.
Klingt einfach, das Problem ist nur, dass ein Ändern des Splitters auch die abgedockten Fenster in der Größe ändert.
Wenn ich nun im abgedockten Zustand die Position des Splitters ändere, dann ändert QT automatisch auch das abgedockte Fenster. Ich kann zwar das abgedockte Fenster in der Größe ändern, aber sobald ich wieder den Splitter bemühe, ist die Größenänderung wieder hin.
Das Problem ist mit beiden Splittern so und ich habe keine Idee, wie ich das verhindern kann.

Weiterhin habe ich das Problem, dass das Resize des Dialogs in dem Stacked Window immer nur die View in der Größe ändert, die im Designer gerade oben war. D.h. ich bin im Designer auf Seite 2, speichere, starte das Programm, gehe auf die 2. Seite und mache ein Resize -> Inhalt ändert sich in der Größe. Im Programm gehe ich dann auf die 1. Seite -> Keine Größenänderung. Anschließend gehe ich im Designer auf die 1. Seite, lasse das Programm laufen und mache auf der 2. Seite ein Resize -> Nichts passiert mit der 2. Seite was die Größe betrifft. Seite 1 hat sich aber "geresized"...

Wenn ich mich unklar ausgedrückt habe, oder noch Fragen offen sind, bitte melden!

Ich nutze derzeit QT 4.4.1 auf Windows mit Studio 2008.

Vielen Dank und sonntägliche Grüße

Wolfgang
archer
Beiträge: 306
Registriert: 2. Februar 2006 09:56

Beitrag von archer »

Verstehe ich das richtig, du hast die zwei Dockwidgets im StackWidget?
Die gehören eigentlich ins Mainwindow in die Dockareas, damit das richtig mit dem docken funktioniert.
Dein Fenster A wäre dann, theoretisch, das CentralWidget. Dann brauchst du auch keine extra Splitter einfügen.
Wolferl2
Beiträge: 10
Registriert: 9. November 2008 00:54
Kontaktdaten:

Beitrag von Wolferl2 »

Ja, das habe ich. Dein Hinweis klingt nicht unplausibl.
Es ist halt so, dass die DockWidgets nur im Kontext des ersten StackedWidget einen Sinn macht. Das zentrale Widget ist die Eingabe, die anderen beiden angedockten sind für die Suche.
Die StackedWidgets auf Seite 2 und 3 sind nur für die Ausgabe - und deshalb sollen sie den kompletten Platz einnehmen, wenn die Suche Fenster angedockt sind.
Wenn die abgedockt sind, dann dürfen die Fenster gerne weiterhin sichtbar bleiben, auch wenn man in der Ergebnissicht ist...
.. habe gerade nachgesehen, das machen die angedockten Fenster auch so...

Nun denn, es wäre schön, wenn das irgendwie so klappen könnte, da das Programm für komplette Computer-Laien gedacht ist und denen kann man am Anfang nicht zumuten, bei der Auswertung erst noch irgendwelche Such-Fenster abzudocken.

Meine derzeitige Fassung unter MFC bzw. RealBasic für den MAC macht das mit nicht modalen Suchfenstern, geht auch, aber das mit dem Docking finde ich doch schöner - wenn es denn gehen würde...
archer
Beiträge: 306
Registriert: 2. Februar 2006 09:56

Beitrag von archer »

Man kann die Dockwidgets dann ja ausbleden, hide(), wenn diese angedockt sind und man auf Seite 2 oder 3 wechselt.
Für das zurückwechseln muss man sich halt merken ob das Fenster wieder angezeigt werden soll oder nicht.
Auf jedenfall gehört ein DockWidget in die DockArea, ansonsten ist es halt "nur" eine Widget mit etwas zusätzlicher Funktionalität.
Wolferl2
Beiträge: 10
Registriert: 9. November 2008 00:54
Kontaktdaten:

Beitrag von Wolferl2 »

Super!

Vielen Dank für den Tipp. Hat bestens geklappt.
Und ich habe meine ersten Widgets gebastelt. Ging ja echt einfach.

Ich habe nun leider noch das Problem mit dem Resize der Controls, die nicht in dem aktuell sichtbaren Stacked Pane des Designers (!) sind.

Aber ich werde da noch mal im Internet schauen, und ggf. berichten, was ich gefunden habe.

Danke nochmal.

Wolfgang
Antworten