我遇到了一个问题,我无法确定地判断布局何时发生。
简化示例:
我有一个带有两个子小部件的小部件。
- 顶部小部件具有扩展宽度和固定高度。假设固定高度默认为 50。
- 底部小部件具有扩展的高度和宽度
- 设置了垂直布局。
假设在某处我可以单击以运行代码的按钮。该按钮不在小部件本身上,以使事情变得简单......
单击按钮时,我执行以下操作:
- 我测量底部可扩展小部件的高度。高度为 100。
- 然后我“topWidget->SetMaximumHeight(100)”和“topWidget->SetMinimumHeight(100)”
- 我再次测量底部可扩展小部件的高度。身高还是100
但是我看到底部的可扩展小部件改变了高度!
这意味着当我执行第 3 步时,尚未进行布局。无论我做什么,update()、updateGeometry() - 我都无法让底部小部件在第 2 步和第 3 步之间改变高度。
我解决这个问题的唯一方法是让计时器等待,比如 250 毫秒,然后测量底部小部件的高度——然后它总是正确的——这意味着重新布局正确发生
这是一个疯狂/肮脏的解决方案,但我没有另一个。是否有我缺少的 API 允许我确定性地同步更改布局并在之后查询受影响小部件的新大小?