Pyqt QMdiSubWindow 使用可变数量的小部件调整大小

Pyqt QMdiSubWindow resize with variable number of widgets

我有一个包含几个小部件的 QMdiSubWindow。这些小部件之一是带有 QGridLayout() 的 QWidget,它可以包含任意数量的子小部件,这些子小部件在运行时确定(最初 none)。我似乎无法锻炼如何让 MDISubWindow 在网格布局中的子窗口小部件数量发生变化时自动调整大小。我应该在某个地方重新实现 sizeHint() 吗?即在主窗口小部件或子窗口小部件中?

当我用鼠标拖动调整大小手柄并捕捉以显示正确大小时,QMdiSubWindow 可以很好地调整大小。

我已经尝试在小部件和 QMdiSubWindow 上调用 .resize().updateGeometry(),但它显然不起作用。任何线索将不胜感激。

@ekhumoro 建议我尝试 adjustSize(),但最初没有用。我进行了更多搜索,最终得到了以下对我有用的解决方案

QTimer.singleShot(1, self.parent.windows[self.uuid].adjustSize)

其中

self.parent.windows[self.uuid]

QMdiSubWindow 对象。我猜只是调用 self.adjustSize() 是行不通的,因为 sizeHint 直到事件队列中的后期才会更新。