Tro*_*our 10
那很奇怪.我的理解是通过addWidget转移所有权添加小部件到布局,所以调用children()应该工作.
但是,作为替代方案,您可以通过使用count()和itemAt(int)提供QLayoutItemto来遍历布局项removeItem(QLayoutItem*).
编辑:
我刚试过addWidget一个直接的C++测试应用程序.并且它不会将QObject所有权转移到布局,所以children()确实是一个空列表.该文档清楚地说,所有权被转移,虽然...
编辑2:
好吧,看起来好像它将所有权转移到具有该布局的小部件(这不是文档所说的).这使得布局中布局兄弟姐妹中的项目本身就在QObject层次结构中!因此更容易坚持count和itemAt.
要从QLayout获取窗口小部件,您必须调用其itemAt(index)方法.正如此方法的名称所暗示的那样,它将返回一个项而不是一个小部件.调用widget()结果将最终为您提供小部件:
myWidget = self.myLayout.itemAt(index).widget()
Run Code Online (Sandbox Code Playgroud)
要删除窗口小部件,请将父窗口小部件设置为None:
myWidget.setParent(None)
Run Code Online (Sandbox Code Playgroud)
Qlayout count()方法也很有帮助.要查找和删除布局的所有内容:
index = myLayout.count()
while(index >= 0):
myWidget = myLayout.itemAt(index).widget()
myWidget.setParent(None)
index -=1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15059 次 |
| 最近记录: |