2014-06-16 12 views
5

Ho un QMainWindow e ho inserito mdiArea nella finestra principale.
è necessario prima vedere la seguente immagine:Come rimuovere lo spazio (margine) tra QMainWindow e mdiArea?

Come hai visto la zona grigia è mdiArea e gli spazi (margine) che tra la finestra principale e mdiArea sono quello che voglio per rimuoverlo.
Ho usato la funzione setContentsMargins, ma non fa nulla.

Come posso rimuovere questi spazi?

voglio essere come la seguente immagine: enter image description here

risposta

9

QMainWindow ha un widget centrale che ha un layout. Il layout che usi su QMainWindow dovrebbe invece essere usato sul suo widget centrale. Quindi si deve chiamare

QWidget* QMainWindow::centralWidget() prima,

modo da poter ottenere il widget di centrale prima e poi utilizzare

void QLayout::setContentsMargins(int left, int top, int right, int bottom)

per regolare il suo layout. Lo schema seguente proviene dalla documentazione di Qt.

enter image description here enter image description here

Creazione di una finestra principale senza un widget di centrale non è supportato. Devi avere un widget centrale anche se è solo un segnaposto.


Per esempio, si potrebbe avere la seguente nel costruttore QMainWindow s':

centralWidget()->layout()->setContentsMargins(0, 0, 0, 0); 
statusBar()->hide(); 
ui->mainToolBar->hide(); 

enter image description here

La barra di di stato e la barra strumento sono stati nascosti, al fine per rimuovere quanto più spazio vuoto possibile.

+0

Ho scritto questo codice nel costruttore di MainWindow. ma sfortunatamente, non vuole ancora rimuovere gli spazi. –

+0

@LionKing Che cosa intendi con "non vuoi rimuovere gli spazi"? Non è quello che vuoi? – Tay2510

+0

@LionKing OK Ho modificato il mio post, devo prima chiamare centralWidget e ottenere il suo layout. – Tay2510

Problemi correlati