1 回答

TA貢獻1836條經驗 獲得超13個贊
如果始終使用 Model 和 Patient 類,則可以使用銷毀() 信號在移除微件時收到通知,然后刪除模型。
由于還負責斷開與銷毀對象相關的所有插槽,因此無法在自己的實例上調用該方法。為了解決這個問題,使用lambda可以解決這個問題。deleteLater()
class Patient(QWidget):
def __init__(self):
super(Patient, self).__init__()
self.model = Model(self)
self.data = [map(lambda x: {'name': 'ken'}, [x for x in range(10000000)])]
self.destroyed.connect(lambda: self.aboutToBeDeleted())
def aboutToBeDeleted(self):
del self.model
class Tab(QTabWidget):
#...
def delete(self, index):
patient = self.widget(index)
self.removeTab(index)
patient.deleteLater()
這應該可以處理所有問題,包括斷開與 相關的所有插槽和信號。調用deleteLater()也應該足夠了,而不是使用sip.delete(我相信這無論如何都是由deleteLater完成的)。patient
添加回答
舉報