Domanda

C'è un modo per specificare la posizione iniziale della finestra di un bambino in Qt?

Ho un'applicazione che funziona su Linux e Windows e sembra che il comportamento predefinito di Qt consenta al Window Manager di determinare il posizionamento delle finestre figlie.

Su Windows, questo è al centro dello schermo su cui si trova il genitore, il che sembra ragionevole.

Su Linux, in GNOME (metacity) è sempre nell'angolo in alto a sinistra, il che è fastidioso.Non riesco a trovare alcuna preferenza del gestore delle finestre per Metacity che mi consenta di controllare il posizionamento delle finestre, quindi vorrei sovrascrivere tale comportamento.

È stato utile?

Soluzione

Geometria dei widget Qt

Chiama il metodo move(x, y) sulla finestra figlia prima di show().I valori predefiniti per xey sono 0, ecco perché appare nell'angolo in alto a sinistra.
Puoi anche utilizzare la posizione della finestra genitore per calcolare una posizione relativa per la finestra figlia.

Altri suggerimenti

In generale, consiglierei di non forzare la posizione delle finestre a meno che la tua applicazione non abbia requisiti di finestra molto speciali.È compito del gestore delle finestre determinare dove posizionare le nuove finestre e la maggior parte di esse fa un buon lavoro.Se MetaCity non sceglie una buona posizione, allora è un problema suo.

Se esegui il posizionamento delle finestre da solo, potresti ottenere un risultato migliore di quello che otterrebbe un gestore di finestre scadente, ma perderai anche gli algoritmi di posizionamento intelligente delle finestre disponibili nei gestori di finestre più avanzati.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top