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

Posted

技术标签:

【中文标题】Pyqt QMdiSubWindow 使用可变数量的小部件调整大小【英文标题】:Pyqt QMdiSubWindow resize with variable number of widgets 【发布时间】:2015-06-24 11:02:36 【问题描述】:

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

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

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

【问题讨论】:

据我所知 QGridLayout 不是 QWidget 的后代,所以我感觉你可能调用了 .resize 并更新了错误的对象。 我实际上的意思是我正在使用 QGridLayout 布局的 QWidget 上调用 .resize 等。我已经更新以使这一点更清楚。 @mor22。你试过adjustSize吗? 【参考方案1】:

@ekhumoro 建议我尝试adjustSize(),它最初不起作用。我做了更多的搜索,最终得到了以下对我有用的解决方案

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

在哪里

self.parent.windows[self.uuid]

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

【讨论】:

以上是关于Pyqt QMdiSubWindow 使用可变数量的小部件调整大小的主要内容,如果未能解决你的问题,请参考以下文章

Qt--QMdiArea和QMdiSubWindow的基本用法

QMdiSubWindow 的初始大小

python pyqt5进度条指示器[重复]

QMdiArea及QMdiSubWindow实现父子窗口及布局方法

Python Qt GUI设计:QMdiArea和QMdiSubWindow类实现多文档界面(拓展篇—3)

Python Qt GUI设计:QMdiArea和QMdiSubWindow类实现多文档界面(拓展篇—3)