当窗口小部件集发生更改时,调整QWidget的大小以仅保留当前窗口小部件

时间:2015-11-30 19:47:32

标签: qt qwidget qlayout

假设有一个QWidget,其布局是垂直的。此布局有一个按钮(bt1)和另一个布局(hLayout)。

该应用有效,点按bt1可添加/删除hLayout中的按钮。

第一次添加按钮时,窗口变大(宽度增加)以保持新按钮。单击下一步隐藏按钮。但隐藏按钮不会使窗口缩小。我希望与添加按钮之前的大小相同。

当删除按钮时,是什么方法可以正确缩小窗口?或者更一般地说,使窗口变得足够大的方法是什么?

2 个答案:

答案 0 :(得分:0)

widget->resize(widget->minimumSize())移除按钮后,只需致电hLayout

答案 1 :(得分:0)

只要使用resize进行显式大小调整意味着涵盖所有可能的事件,就会有更轻松,更智能的方法来使窗口小部件自动调整大小。请查看QWidget::setSizePolicyQSizePolicy

在像你这样的情况下,我经常使用:

// your specific code and size policy *may* differ
widget->setMinimumSize(width, height);
widget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);

并且在这种情况或很多情况下不要干扰事件处理程序调整大小到特定大小。