隐藏Qt小部件并保持小部件空间

hum*_*rto 23 layout qt widget

在一个简单的形式,我做了几个按钮,并采用水平布局.当鼠标离开该区域时,应该隐藏其中一个按钮,最后一个按钮.使用button-> hide()它可以工作,但所有按钮都由布局管理器重新排列.我想要的是所有其他按钮继续在他们的位置.我尝试用小部件占位符替换小部件并交换按钮和占位符hide()/ show(),调用占位符 - >调整大小(button-> size()),但布局管理器不尊重调整大小和占位符的最小大小.删除小部件并保留其空间的最佳方法是什么?

Tho*_*sum 24

在Qt 5.2中,可以执行以下操作:

QSizePolicy sp_retain = widget->sizePolicy();
sp_retain.setRetainSizeWhenHidden(true);
widget->setSizePolicy(sp_retain);
Run Code Online (Sandbox Code Playgroud)

我之前在这里发布了相同的解决方案

如何在不改变其他Qt小部件的位置的情况下使Qt小部件不可见?

(这似乎是这个问题的重复).


小智 6

尝试将您的窗口小部件嵌入到具有2个页面的QStackWidget中:*您的窗口小部件在一个页面上*另一个空页面

如果要隐藏窗口小部件,请将当前qstackwidget页面设置为空白页面.并将其设置回主页以显示您的小部件.


Hum*_*iro -1

我不知道这是否是最好的方法,但使用 QStackedWidget 来包装按钮解决了这个问题。