2015-06-17 38 views
1

我正在處理形狀更改對話框。 當更多按鈕被擊中時會放大,再次擊中時會縮小。我所做的是使用layout() -> addWidget()layout() -> removeWidget()。當我添加一個小部件時它會正確放大,但是當我刪除它不縮小的部分時。我嘗試使用layout() -> update()layout() -> updateGeometry(),但他們都沒有工作。Qt - 刪除小部件時佈局不收縮

編輯** 下面是我點擊按鈕時調用的函數。

void findDialog::small() 
{ 
    replaceBox -> hide(); 
    layout() -> removeWidget(replaceBox); 
    moreButton -> show(); 
    updateGeometry(); 
} 
void findDialog::extended() 
{ 
    layout() -> addWidget(replaceBox); 
    replaceBox -> show(); 
    moreButton -> hide(); 
    updateGeometry(); 
} 

replaceBoxQGroupBox

moreButtonQPushButton

findDialogQDialog inherited class

+1

嘗試在更新之前調用'layout() - > invalidate()' - 刪除緩存的信息 - 這可能有幫助 – Thalia

+0

它不起作用。謝謝 – Michael

+1

你的意思是QWidget :: updateGeometry()?這應該做的伎倆,如果不是請添加更多的上下文(代碼片段) –

回答

1

layout() -> setSizeConstraint(QLayout::SetFixedSize);所以,現在的物件的尺寸總是設置爲sizeHint() 這就是爲什麼解決它的佈局沒有更新,因爲我想要它。 這種方式updateGeometry()是不需要的。

+0

你爲我節省了很多頭疼,謝謝:) – undu