Qt QWidget :: minimumSizeHint延迟(#2)

时间:2015-07-23 13:52:21

标签: c++ qt

当我在我的应用程序中隐藏窗口小部件时,minimumSizeHint不会立即更新。

我尝试了this post建议的QLayout::activate()解决方案,但它对我不起作用,因为QLayout::activate()会返回false

我尝试在MainWindow类这样做:

ui.groupBox->setVisible(!ui.groupBox->isVisible());

qDebug() << this->layout()->activate();

qDebug() << this->minimumSizeHint();

this->resize(this->minimumSizeHint());

为什么它不起作用的任何想法?

我目前的解决方法是:

QTimer::singleShot(10, this, SLOT(on_resizeMin()));

但是我注意到在慢速系统上10ms可能还不够。讨厌的解决方法。

1 个答案:

答案 0 :(得分:0)

尺寸提示旨在由布局系统在适当的时刻使用。您不应该在其他地方使用它们 - 这就是为什么它们看起来不会工作&#34;。

您似乎希望将主窗口小部件(窗口)的大小限制为其中一个大小提示。您需要在该窗口小部件的布局上设置适当的sizeConstraint。有两种方法:

  1. 使用QLayout::SetFixedSize约束。重新实现布局sizeHint以返回minimumSize,以便QLayout::SetFixedSize将窗口的大小设置为最小大小提示,而不是默认大小提示。< / p>

  2. 修补Qt以实施QLayout::SetMinAndMaxToMinSize,意思是&#34;主要小部件的最小最大尺寸设置为minimumSize()&#34 ;

    补丁很小:)