gpt4 book ai didi

python - 有什么方法可以删除 QGridLayout 中的 QWidget 吗?

转载 作者:行者123 更新时间:2023-12-02 17:47:18 26 4
gpt4 key购买 nike

我想要的是完全删除一个小部件(清除它、删除它等...),但它在网格布局中,所以即使在调用 removeWidget 时,它仍然保留一个指针,所以 python 不想删除该对象。这是(剥离的)代码:

def addRow(self, row):
self.entries.insert(row, QtGui.QLineEdit())
self.gridlayout.addWidget(self.entries[row], row, 0)
...
def remRow(self, row):
self.gridlayout.removeWidget(self.entries[row])
del(self.entries[row])
...
(in another function)
foo.addRow(0)
foo.remRow(0)

它从网格布局中删除了小部件,但并没有完全删除它,所以它实际上被打包在(?)布局下方,并且小部件显然比布局大(虽然不确定,因为我看不到结束)。

那么,有没有办法完全删除 QGridLayout 中的小部件?

提前致谢!

最佳答案

布局将小部件重新设置为容器的父级。因此,即使您将其从布局中删除,容器小部件仍然是父级,因此不会删除该小部件。您应该调用 .deleteLater() 来告诉 Qt 删除该小部件(有效清除该小部件的所有引用,以便 Python 可以清除它):

def remRow(self, row):
self.gridlayout.removeWidget(self.entries[row])
self.entries[row].deleteLater()
del self.entries[row]

关于python - 有什么方法可以删除 QGridLayout 中的 QWidget 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13184250/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com