Hallo Ihr,
ich habe folgendes Problem:
in meiner Anwendung nutze ich eine QMainWindow mit Dockwidgets.
mit der Funktion setCorner() kann man ja festlegen welche DockWidgetArea welche Ecke belegen darf.
Ich würde nun gerne bequem per Maus steuern können wem die Ecken gehören.
Mein Ansatz:
Ich möchte in den Ecken der gesamten von Dockwidgets genutzten Fläche den Mauszeiger auswechseln und per Klick die Areas togglen die die Ecke nutzen können, also z.B. links oben mit Klick in die Ecke steuern ob Top oder Left die Ecke nutzen darf.
Das Auswechseln des Cursors und das Abfangen des Mausklick zum toggeln ist kein Problem, ich mache das mittels Eventfilter.
Ich habe den Eventfilter auf QApplication gelegt, so dass wirklich alle Events gefiltert werden. Leider habe ich das Problem die "Ecken" der Dockwidgetfläche zu ermitteln. Es ist ja weder mainwindow->geometry() (da sind ja noch die Toolbars etc. drin) noch ist es Centralwidget (da sind ja die Dockwidgetareas drumherum).
Da ich den Eventfilter auf QApplikation gelegt habe, sind die Mauspositionen leider immer auf die entsprechendne Widgets bezogen, das heißt ich kann nur mit globalPos() arbeiten. Ich kann es mittels mainwindow->geometry() auch soweit bringen dass ich egal auf welchem Widget der Mauszeiger sitzt die korrekte Koordinate der App ermittel, leider kann sich sie aber nicht bereinigen..
In der MainwindowDoku ist der Aufbau schön erläutert, jedoch gibt es leider keine programmtechnische Möglichkeit an die Fläche der dockwidgets als "entireDockwidgetAreaGeometry()" heranzukommen.
Wie würdet ihr vorgehen um die äusseren 4 Ecken der Fläche zu ermitteln in der die Dockwidgetareas sitzen?
Ich hoffe auf eure Hilfe...
Danke, Torben