当我在我的应用程序中隐藏窗口小部件时,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可能还不够。讨厌的解决方法。
答案 0 :(得分:0)
尺寸提示旨在由布局系统在适当的时刻使用。您不应该在其他地方使用它们 - 这就是为什么它们看起来不会工作&#34;。
您似乎希望将主窗口小部件(窗口)的大小限制为其中一个大小提示。您需要在该窗口小部件的布局上设置适当的sizeConstraint
。有两种方法:
使用QLayout::SetFixedSize
约束。重新实现布局sizeHint
以返回minimumSize
,以便QLayout::SetFixedSize
将窗口的大小设置为最小大小提示,而不是默认大小提示。< / p>
修补Qt以实施QLayout::SetMinAndMaxToMinSize
,意思是&#34;主要小部件的最小和最大尺寸设置为minimumSize()
&#34 ;
补丁很小:)