Qt:When is layout";最后一句;?
我遇到了一个问题,我无法确定布局何时发生 简化示例: 我有一个小部件和两个子部件Qt:When is layout";最后一句;?,qt,Qt,我遇到了一个问题,我无法确定布局何时发生 简化示例: 我有一个小部件和两个子部件 顶部小部件具有扩展宽度和固定高度。假设固定高度默认为50 底部小部件具有扩展的高度和宽度 有一个垂直布局设置 假设在某个地方有一个按钮,我可以单击它来运行代码。按钮不在小部件上,使事情变得简单 单击按钮时,我会执行以下操作: 我测量底部可扩展小部件的高度。高度是100 然后是“topWidget->SetMaximumHeight(100)”和“topWidget->SetMinimumHeight(100)”
- 顶部小部件具有扩展宽度和固定高度。假设固定高度默认为50
- 底部小部件具有扩展的高度和宽度
- 有一个垂直布局设置
尝试在步骤2和步骤3之间调用QApplication::processEvents()(它应该执行计时器允许事件循环执行的操作)尝试在步骤2和步骤3之间调用
QApplication::processEvents()
它应该执行计时器允许事件循环执行的操作)。尝试调用activate()
在您的布局上。那么,在您重新检查底部小部件的大小之前,顶部小部件不会调整大小?也许您可以尝试检查顶部小部件发出的调整大小事件
,并在收到信号后执行步骤3。根据文档,“调用resizeEvent()时,小部件已经有了新的几何体。”我使用的是QT 4.8.5,不,我可以发誓,在对几何体进行实际更改之前,有时会调用顶部小部件上调用的resizeEvent。在内部底部小部件上的“resizeEvent”代码中查询“geometry()”,将给出旧的高度,并且确保较低的小部件稍后更改其高度。我通过精确的日志记录捕捉到了这种行为。QApplication::processEvents()完成了这项工作。如果你把你的小费作为回答,我会相信你的。