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的基本用法
QMdiArea及QMdiSubWindow实现父子窗口及布局方法