Seite 1 von 1

[gelöst] QWorkspace frisst Child Positionen (mampf, mampf)

Verfasst: 9. Mai 2005 19:14
von Mitsu
Weiß jemand, wie man die Position eines Widgets w ermitteln kann,
dass sich innerhalb eines QWorkspace-Widgets befindet?

Eigentlich sollte sich das ja mit w->x(), w->y() oder w->pos()
machen lassen. Die Methoden sollen die Position des Widgets
relativ zu seinem Parent angeben. Bei Widgets, die sich innerhalb
eines QWorkspace-Widgets befinden, bekomme ich allerdings immer
die Position des Workspace-Widgets selbst bezueglich seines
eigenen Parents (hier ein QMainWindow) zurueck.

Die Methoden w->width(), w->height() funktionieren aber nach
wie vor ganz normal innerhalb des Workspace.

Was habe ich da uebersehen???

Verfasst: 9. Mai 2005 19:56
von FlorianBecker
Naja, übersehen? Mh, du fragst QWorkspace ab und nicht das Fenster innerhalb des Workspaces?

/* Hier sind jetzt alle Fenster, die im Workspace liegen enthalten */
QWidgetList windows = qworkspace -> windowList( Workspace::CreationOrder );

Du könntest z.B. einfach focusWidget nehmen:
QWidget *curWidget = qApp -> focusWidget();
if ( curWidget -> inherits( "QLineEdit" ) )

Oder du kannst das Widget auch direkt von QWorkspace abfragen, weiß ich aber nicht auswendig.

Verfasst: 10. Mai 2005 12:57
von Mitsu
Hallo Florian,

Danke fuer den Tip. Ich habe die Widgets innerhalb des QWorkspace-
Widgets direkt angesprochen, um ihre Geometrien zu aendern.
Die Dokumentation fuer QWorkspace sagt dazu:

"To change or retrieve the geometry of MDI windows you must
operate on the MDI widget's parentWidget()."

Tja, das haette ich mal beachten sollen... Hab's ueberlesen.
Ein bißchen suspekt bleibt das Verhalten der MDI-Widgets
bei Geometrieaenderungen aber doch, finde ich. Die Breite und
Hoehe laesst sich naemlich auch direkt vom MDI-Widget selbst
erfragen, bloß die Position bekommt man nur ueber
w->parentWidget()->x() bez. y().

Gruesse, Kai