2009-08-13 6 views
3

Ist es möglich, benutzerdefinierte Dockbereiche mit Qt 4.4 zu erstellen? Ich weiß, dass dies in Qt 3 möglich ist, wie dies document vorschlägt. Auszug aus dem Dokument "... Wenn Sie Ihre eigenen Dock-Bereiche erstellen müssen, schlagen wir vor, dass Sie eine Unterklasse von QWidget erstellen und Ihre Q3DockAreas zu Ihrer Unterklasse hinzufügen ...". Es scheint mir jedoch, dass in Qt 4 Q3DockArea entfernt wurde und nun das QMainWindow selbst die Dock-Bereiche hat. Ich möchte im Grunde mein eigenes Dockbereich-Widget haben, an das ich Widgets andocken kann. Dieses Dock-Bereichs-Widget kann überall in der Anwendung sein. Irgendwelche Ideen, wie ich das machen kann?Benutzerdefinierter Dockbereich mit Qt 4.4

Antwort

4

Zuerst wurde Q3DockArea nicht in Qt4 entfernt, sondern wurde hinzugefügt. Die Klasse, die entfernt wurde, war QDockArea. Sie können diese Q3 * -Klassen immer noch verwenden, wenn Sie alten Code haben, für den sie gemacht sind.

Aber ich würde nicht empfehlen, die Kompatibilitätsklassen zu verwenden. Wie wäre es mit einem QMainWindow wie einem QWidget? Erstellen Sie es mit einem übergeordneten Widget, aber ohne Menü, Symbolleiste, Statusleiste und widerrufen Sie den Status der obersten Ebene mit setWindowFlags() und dergleichen.

Sie können es als eine alte QDockArea verwenden, platzieren Sie es wo Sie möchten und fügen Sie Ihre QDockWidgets hinzu.

Außerdem ist die aktuelle Qt Version 4.5.2, keine Notwendigkeit, veraltete Versionen verwenden ;-)

+0

Das Problem, das ich mit dem Erstellen eine QMainWindow sehen, wie ein Dock-Bereich ist, dass Sie nur auf der linken Seite andocken können, rechts , oben und unten in einem QMainWindow. Wenn Sie also etwas in diesen Bereich fallen lassen, wird es nicht das gesamte Widget ausfüllen, sondern nur auf die andockbaren Bereiche. Es sieht nicht gut aus. ;) – Juba

+0

Das ist nicht wahr, zumindest wenn es in diesem QMainWindow kein centralWidget gibt, deckt ein einzelnes Dock den gesamten Bereich ab, wenn es erlaubt ist. Die Dock-Regionen haben keine inhärente Größenbeschränkung. Aber verwenden Sie die Q3Dock * -Klassen, wenn Sie das Gefühl haben, dass sie sich mehr wie gewünscht verhalten. Oder schreiben Sie Ihre eigene QDockArea-Klasse, indem Sie den Docking-Teil von QMainWindow als Vorlage verwenden. – hirschhornsalz

Verwandte Themen