2012-05-18 21 views
8

現狀:
我以這種方式構建的Qt4的應用程序中工作(如果父控件在這個問題無關緊要):QWidget.setContentsMargins()似乎是無效的:爲什麼呢?

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

目的:
我希望這是沒有利潤在子QFrames和它們的QLabel之間,以及QLabels和它們的QPixmap之間。

方法:
我已經要求減少與QFrame.setContentsMargins子QFrame的利潤率(0,0,0,0),並用其佈局的QBoxLayout.setSpacing(0)。 QLabel和它的QPixmap之間的零邊際似乎自然發生。

問題:
儘管這一切,QFrames內利潤率堅持顯示出來:我已經能夠通過應用樣式表到各個部件進行測試的情況。

我該怎麼辦?

回答

10

Answer provided on Qt Forum

頁邊距內容應在小部件設置都和它佈局。因此:

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

事實上,setContentsMargins必須在佈局上執行,並且如果它不工作,那麼一個可選參數的間隔設定爲0 - > setSpacing(0)到佈局。 – darkgaze

+0

setContentMargins不適用於我。任何幫助? – abhiarora

相關問題