2015-04-03 20 views
6

Beim Ziehen eines Widgets mit der Maus wird das Widet frei bewegt (Widget mit Rahmen). Was ich erreichen möchte, ist bestimmte Bereiche zu haben, in denen das bewegte Widget zum Beispiel an ein anderes Widget oder an den Rand des Bildschirms gerastet wird. Zum Beispiel rastet das Playlistenfenster in Winamp im Hauptfenster ein. Wie man solches Verhalten erreicht?Wie wird die QWidget-Geometrie beim Bewegen mit der Maus abgefangen?

+0

Es heißt Docking – deW1

+1

@ deW1 es heißt Schnapper. –

+0

Sie müssen Fensterbewegungsereignisse behandeln und Geometrie manuell anpassen (mit Ihrem eigenen Algorithmus). Es gibt keine offiziellen Methoden, wie es geht. –

Antwort

0

Wenn Ihr Widget nur ein kleiner Teil Ihrer Anwendung ist, würde ich dasselbe wie den ersten Kommentar anbieten. Du sollst ein

QMainWindow 

verwenden und dann einige

QDockWidget 

zum Hauptfenster hinzuzufügen.

// ... 

QMainWindow* window = new QMainWindow(); 

// ... 

QDockWidget* dockWidget = new QDockWidget("Your DockWidget"); 
window->addDockWidget(Qt::LeftDockWidgetArea, dockWidget); 

// ... 

Aber wenn es nicht Ihren Anforderungen entspricht, dann müssen Sie Ihren eigenen Algorithmus für diesen Zweck implementieren.