【问题标题】:QT layout manager does not recover space when hiding widget until window is movedQT 布局管理器在移动窗口之前隐藏小部件时不会恢复空间
【发布时间】: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,谢谢。效果很好。

标签: qt


【解决方案1】:

因为布局小部件非常昂贵,Qt 并不总是这样做。如果您更改封闭小部件的大小,您可能需要在它们上调用updateGeometry 以触发封闭布局管理器重新布局。但是如果你隐藏了这个小部件,updateGeometry 什么都不做。在这种情况下,您需要在父窗口小部件上调用 adjustSize,这将触发重新布局。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-24
    • 2020-05-05
    • 2012-02-04
    • 2020-10-16
    • 1970-01-01
    • 1970-01-01
    • 2021-02-18
    相关资源
    最近更新 更多