我可以通过 deleteLater() 将信号分配给旧对象的析构函数中的新对象吗
Can I assign signal to new object in destructor of old one by deleteLater()
我有一个 scrollArea,里面有几个按钮和框架
单击按钮
self.connect(self.day_btn, QtCore.SIGNAL("toggled(bool)"), self.show_days)
我调用了一个函数,尝试使用 deleteLater() 删除 scrollArea 中的所有对象
def show_days(self):
if self.day_btn.isChecked():
if self.day_objs_list:
for temp_day in self.day_objs_list:
self.day_objs_list[temp_day]['frame'].deleteLater()
然后在此函数中创建新帧并需要应用 self.scrollArea.ensureWidgetVisible()
但看起来它已应用于旧(已删除)对象,并且仅在此之后它才创建新对象
据我了解 Does deleteLater() wait for all pending signals to be delivered?
当您发出信号时,它会被放入事件队列中。调用 deleteLater 也会向队列中添加一个事件
如何添加在 deleteLater() 之后起作用的函数信号
简单的发射不起作用。它使 ensureWidgetVisible() 工作但对于旧对象
您可以使用 sip module:
立即删除对象
import sip
...
sip.delete(self.day_objs_list[temp_day]['frame'])
我有一个 scrollArea,里面有几个按钮和框架 单击按钮
self.connect(self.day_btn, QtCore.SIGNAL("toggled(bool)"), self.show_days)
我调用了一个函数,尝试使用 deleteLater() 删除 scrollArea 中的所有对象
def show_days(self):
if self.day_btn.isChecked():
if self.day_objs_list:
for temp_day in self.day_objs_list:
self.day_objs_list[temp_day]['frame'].deleteLater()
然后在此函数中创建新帧并需要应用 self.scrollArea.ensureWidgetVisible()
但看起来它已应用于旧(已删除)对象,并且仅在此之后它才创建新对象
据我了解 Does deleteLater() wait for all pending signals to be delivered?
当您发出信号时,它会被放入事件队列中。调用 deleteLater 也会向队列中添加一个事件
如何添加在 deleteLater() 之后起作用的函数信号 简单的发射不起作用。它使 ensureWidgetVisible() 工作但对于旧对象
您可以使用 sip module:
立即删除对象import sip
...
sip.delete(self.day_objs_list[temp_day]['frame'])