调整QWidget的大小,以便在窗口小部件集发生更改时仅容纳当前窗口小部件



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

该应用程序的工作原理是,点击bt1可以从hLayout添加/删除按钮。

第一次添加按钮时,窗口会变大(宽度增加)以按住新按钮。下一次单击将隐藏按钮。但是隐藏按钮并不会使窗口缩小。我想要和添加按钮之前一样大的尺寸。

取下按钮后,如何正确缩小窗口?或者更普遍地说,是什么方法让窗户变得足够大?

hLayout中删除按钮后,只需调用widget->resize(widget->minimumSize())

只要使用resize进行显式的大小调整意味着要覆盖所有可能的事件,就有一种更轻松、更智能的方法可以使小部件自动正确调整大小。看看QWidget::setSizePolicy和QSizePolicy。

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

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

并且在这种或许多情况下,不干扰事件处理程序将大小调整为特定大小。

最新更新