在PyQT中获取布局的小部件
问题内容:
我已经通过QVBoxLayout
添加了一些小部件addWidget()
。我现在需要删除那些小部件,并且看来我需要使用removeWidget()
(需要删除一个小部件)来执行此操作。
我认为调用children()
或findChildren(QWidget)
在我的布局上会返回我添加到其中的小部件的列表。不过,我在调试器中,只收到空列表。
我是不是很误会什么?我上周刚开始进行PyQT,并且大部分时间都在通过API文档的反复试验来学习。
问题答案:
真奇怪 我的理解是,通过addWidget
将所有权转移到布局中来添加小部件,因此调用children()
应该起作用。
然而,通过使用替代你可以遍历布局项目count()
,并itemAt(int)
提供一个QLayoutItem
到removeItem(QLayoutItem*)
。
编辑:
我刚刚尝试addWidget
了一个直接的C
++测试应用程序。并且它不会将QObject
所有权转移到版面,因此children()
确实是一个空列表。该文档清楚地说,所有权转移,但…
编辑2:
好的,看起来好像是将所有权转移给具有该布局的小部件(这 不是
文档所说的)。这使得QObject
层次结构中布局本身的布局同级中的项目!因此,更容易使用count
和itemAt
。