QT 布局管理器在移动窗口之前隐藏小部件时不会恢复空间
Posted
技术标签:
【中文标题】QT 布局管理器在移动窗口之前隐藏小部件时不会恢复空间【英文标题】:QT layout manager does not recover space when hiding widget until window is moved 【发布时间】:2016-03-20 09:13:44 【问题描述】:我正在使用 Qlabels 绘制一些图形和图像(通过 setpixmap)。
我的基本布局是:
QVBoxlayout 主布局通过 qdialog 的 setlayout。 QHboxlayout(QLabels 数组) Qlabel expandPlot(上述 QLabels 之一的可选扩展图) QLabel mainImage 主图显示
在 QDialogs 重新实现的按键事件处理程序中,我隐藏()/显示()扩展的情节。当我 hide() 扩展绘图时,布局管理器恢复了大约 1/2 的垂直使用量。然后当我拖动窗口时,布局管理器会恢复垂直空间的剩余部分(就好像没有项目存在一样)。
如何强制移动窗口的行为?我希望布局管理器完全恢复垂直空间。
我在 Windows 上使用 Qt 5.6,但想要跨平台解决方案。 谢谢你,迈克
【问题讨论】:
您是否在隐藏小部件上调用updateGeometry
?显示问题的代码的缩减版本将改善这个问题。
否 - 在这种情况下,updateGeometry
似乎是无操作的。在父级上尝试adjustSize
。
您好 Strubbly,谢谢。效果很好。
【参考方案1】:
因为布局小部件非常昂贵,Qt 并不总是这样做。如果您更改封闭小部件的大小,您可能需要在它们上调用updateGeometry
以触发封闭布局管理器重新布局。但是如果你隐藏了这个小部件,updateGeometry
什么都不做。在这种情况下,您需要在父窗口小部件上调用 adjustSize
,这将触发重新布局。
【讨论】:
以上是关于QT 布局管理器在移动窗口之前隐藏小部件时不会恢复空间的主要内容,如果未能解决你的问题,请参考以下文章