2012-05-18 15 views
8

Situazione:
Sto lavorando su un'applicazione Qt4 costruito in questo modo (nei widget genitore caso ha importanza in questo numero):QWidget.setContentsMargins() sembra inefficace: perché così?

QApplication 
    |_ QMainwindow 
     |_ QScrollArea (central widget) 
       |_ QFrame (child of scroll area) 
        |_ QFrame 
        |  |_ QLabel 
        |   |_ QPixmap 
        |_ QFrame 
        |  |_ QLabel 
        |   |_ QPixmap 
        |_ QFrame 
          |_ ect... 

Obiettivo:
Voglio che ci sia senza margini tra i sub-QFrames e i loro QLabels e ugualmente tra QLabels e la loro QPixmap.

Metodo:
ho chiesto di ridurre i margini del sub-QFrame con QFrame.setContentsMargins (0, 0, 0, 0) e QBoxLayout.setSpacing del suo layout (0). Il margine zero tra QLabel e la sua QPixmap sembra avvenire in modo naturale.

Problema:
Nonostante tutto questo, i margini all'interno QFrames persistono nel presentarsi: una situazione che ho potuto testare applicando un foglio di stile ai vari widget.

Cosa posso fare?

risposta

10

Answer provided on Qt Forum: contenuti

I margini deve essere impostato sia sul widget e il suo layout . Quindi:

QWidget *w = new QWidget(); 
w->setContentsMargins(0, 0, 0, 0); 
w->layout()->setContentsMargins(0, 0, 0, 0); 
+3

Infatti, le setContentsMargins deve essere eseguito sul tracciato, e se non funziona, quindi un parametro facoltativo è l'impostazione della distanza di 0 -> setSpacing (0) al layout. – darkgaze

+0

setContentMargins non funziona per me. Qualsiasi aiuto? – abhiarora