PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : QT - QWorkspace



Gartenzwerg
26-06-2003, 18:22
hi,
ich habe vor eine MDI-Anwendung zu schreiben.
Nun habe ich ein QMainWindow und als CentralWidget ein QWorkspace. Diesen QWorkspace übergebe ich als Elternwidget für weitere QMainWindow's, die QTable's enthalten.
Dies funktioniert soweit alles. Doch wenn ich ein neues QMainWindow im QWorkspace erzeuge, erscheint links oben in der QMenuBar ein kleines weißes Quadrat.

Wie kann ich dieses verschwinden lassen, oder das Signal abfangen, das das PopupMenu öffnet wenn ich darauf klicke?

Tschau Gartenzwerg

anda_skoa
26-06-2003, 21:07
Bist du dir sicher, dass die MainWindows als MDI Childs haben willst?

Wozu dann MDI?

Abgesehen davon: Window in Window MDI ist ziemlich verpönt.

Ganz brauchbare MDI Konzepte sind Tabbed MDI und docked-MDI

QExtMDI kann glaub ich beide.

Ciao,
_

Gartenzwerg
27-06-2003, 05:20
hi,
ich wollte es vom Design so ähnlich wie Excel machen.
Also mehrere Tabellen und unten eine Tabbar zum umschalten.
Ist das Tabbed MDI?
Kann ich die Tabellen ohne QMainWindow in den QWorkspace einfügen?
Was ist QExtMDI und wo bekommt man es?
Warum ist Window in Window MDI verpönt?

Tschau Gartenzwerg

anda_skoa
27-06-2003, 08:47
Original geschrieben von Gartenzwerg
hi,
ich wollte es vom Design so ähnlich wie Excel machen.
Also mehrere Tabellen und unten eine Tabbar zum umschalten.
Ist das Tabbed MDI?


ja, man hat die verschiedenen Dokumente auf jeweils einem eigenenm Tab.

Allerdings bin ich mir jetzt nicht sicher, ob Excel nicht pro Dokument ein neues Fenster auf macht und nur Tabellen des selben Dokuments in den Tabs hat.
Das wäre dann normales SDI mit Multiple Views.

Hängt aber von der Definition von "Dokument" ab.



Kann ich die Tabellen ohne QMainWindow in den QWorkspace einfügen?


Ich denke, man kann da jedes Widget nehmen.
QWorkspace Doku sagt


Document windows (i.e. MDI windows) are also ordinary Qt widgets which have the workspace as parent widget.

Sonst nimmt man halt ein normales QWidget als Fenster Widget und gibt den Table da rein.



Was ist QExtMDI und wo bekommt man es?


Eine Qt Erweiterung von Falk Brettschneider für MDI.
QExtMDI kann verschiedene MDI Arten und lässt das vom User auch zur Laufzeit ändern.
Dadurch kann ein User praktisch seine bevorzugte MDI Art einstellen.

QextMDI wird AFAIK in KDevelop, Kate, Quanta, etc, verwendet.
In KDE3.2 wird es eine eigene MDI Lib geben, die daraus entstanden ist.



Warum ist Window in Window MDI verpönt?


Zum Beispiel sind die Kindfenster an den Innenbereich des Elternfensters gebunden/beschränkt. Dadurch kann man keine virtuellen Desktops davür benutzen.
Bei einem Mutlimonitor Setup muss man das Hauptfenster auf beide Desktops vergrößern, wenn man Kinder auf nebeneinander "maximiert" haben will, was zu grauslichen Effekten bei Menü und Toolbar führt.

Die Kind Windows sind meistens nicht Window Manager gemanagt, haben also andere Dekoration und verhalten sich potentiell anders, zb bei Focus follows Mouse.

Usw.

Ciao,
_