2015-06-17 39 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