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
直到事件队列中的后期才会更新。
我有一个包含几个小部件的 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
直到事件队列中的后期才会更新。