Dialog Start Position festlegen

Alles rund um die Programmierung mit Qt
Antworten
pospiech
Beiträge: 232
Registriert: 1. September 2006 17:20
Wohnort: Hannover

Dialog Start Position festlegen

Beitrag von pospiech »

Ich habe einen Dialog der beim Anzeigen zur Hälfte nicht auf dem Bildschirm erscheint. Warum ist mir unklar.

Daher wüsste ich gerne was die Startposition (Anzeigeposition) eines Dialogs festlegt und ob es spezielle Methoden gibt Dialoge auf dem Bildschirm anzuordnen oder zu zentrieren?

(und ja, ich habe in der Suche und der Doku zu QDialog geschaut)
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
pospiech
Beiträge: 232
Registriert: 1. September 2006 17:20
Wohnort: Hannover

Beitrag von pospiech »

Christian81 hat geschrieben:Whol nicht genug: http://doc.trolltech.com/4.3/qwidget.html#pos-prop
Das Problem ist, das man manchmal wissen muss wo man suchen soll.

Jetzt nutze ich frameGeometry() zum Abfragen und stelle fest das der Wert bei 0 oder <0 liegt. Wenn ich aber nur über setGeometry(WindowRect); einen neunen Wert zuweise dann ist das ja nicht identisch mit frameGeometry. Eine Funktion setFrameGeometry konnte ich hingegen nicht finden.

Wie weist man dann die frameGeometry zu ?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Ich weiss nicht genau was Du machen willst, aber vielleicht hilft http://doc.trolltech.com/4.3/geometry.html schon weiter - wenn nicht, bitte genauer beschreiben.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Re: Dialog Start Position festlegen

Beitrag von macman »

pospiech hat geschrieben:Ich habe einen Dialog der beim Anzeigen zur Hälfte nicht auf dem Bildschirm erscheint. Warum ist mir unklar.
Den Fehler solltest Du aber zuerst suchen. Im Kontruktor deines Dialoges sollte zuerst setupUi(this) kommen und nichts anderes. Ansonsten zum sichern und wiederherstellen der Position saveGeometry und restoreGeometry.

Anpassungen mit setGeometry, falls Auflösungswechsel stattfand und der Dialog nicht korrekt angezeigt wird. setFrameGeometry braucht man nicht unbedingt, da man Unterschiede zu geometry berechnen und in geometry einfliessen lassen kann.
Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.
pospiech
Beiträge: 232
Registriert: 1. September 2006 17:20
Wohnort: Hannover

Beitrag von pospiech »

Im Konstruktor steht als erstes ein setupUi(this). Was ich mache ist von MainWindow aus dem Menu heraus einen Dialog zu starten. Dessen Startgeometry ist anscheint abhängig von der Position von MainWindow. Wenn MainWindow relativ weit oben am Bildschirm ist, dann wird der Dialog höher gestartet. Irgendwann ist die geometry dann so, dass ein Teil der Dialogs außerhalb des Bildschirms gezeichnet wird. So dass also folgendes zutrifft

Code: Alles auswählen

	QRect WindowRect= this->frameGeometry();
	if (WindowRect.top() < 0 )
...
PeterLustig
Beiträge: 386
Registriert: 21. November 2007 20:07

Beitrag von PeterLustig »

Schau dir mal "mapToGlobal" an.
Antworten