Frage

Gibt es eine Möglichkeit, die anfängliche Fensterposition eines Kindes in Qt anzugeben?

Ich habe eine Anwendung, die unter Linux und Windows läuft, und es sieht so aus, als ob das Standardverhalten von Qt es dem Fenstermanager ermöglicht, die Platzierung der untergeordneten Fenster zu bestimmen.

Unter Windows befindet sich dies in der Mitte des Bildschirms, auf dem sich das übergeordnete Element befindet, was sinnvoll erscheint.

Unter Linux und in GNOME (Metacity) befindet es sich immer in der oberen linken Ecke, was ärgerlich ist.Ich kann keine Fenstermanager-Einstellungen für Metacity finden, mit denen ich die Fensterplatzierung steuern kann, daher möchte ich dieses Verhalten überschreiben.

War es hilfreich?

Lösung

Qt-Widget-Geometrie

Rufen Sie vor show() die Methode move(x, y) im untergeordneten Fenster auf.Die Standardwerte für x und y sind 0, weshalb sie in der oberen linken Ecke angezeigt werden.
Sie können auch die Position des übergeordneten Fensters verwenden, um eine relative Position für das untergeordnete Fenster zu berechnen.

Andere Tipps

Im Allgemeinen würde ich empfehlen, Fensterpositionen nicht zu erzwingen, es sei denn, Ihre Anwendung hat einige ganz besondere Fensteranforderungen.Es ist die Aufgabe des Fenstermanagers, zu bestimmen, wo neue Fenster platziert werden, und die meisten von ihnen leisten gute Arbeit.Wenn MetaCity keine gute Position einnimmt, dann ist das sein Problem.

Wenn Sie die Fensterplatzierung selbst durchführen, erhalten Sie möglicherweise ein besseres Ergebnis als ein schlechter Fenstermanager, aber Sie verpassen auch die intelligenten Fensterplatzierungsalgorithmen, die in fortgeschritteneren Fenstermanagern verfügbar sind.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top