我想在销毁小部件之前释放一些资源,但我不想手动执行(我有许多小部件,每个小部件都有自己的资源)。我希望在关闭整个GUI软件时自动调用release函数,就像我可以使用c++在每个widget destruct函数中那样。我该怎么做?你知道吗
编辑:主要资源是QThread,它的事件循环在构建的小部件上启动。我想在小部件被销毁之前停止事件循环。你知道吗
编辑:正如@mguijarr所说,我将widget destructed signal连接到资源释放函数,但似乎不起作用:
from PySide import QtGui, QtCore
import sys
class MyWidget(QtGui.QWidget):
def __init__(self, *args, **kwargs):
print 'init MyWidget'
super(MyWidget, self).__init__(*args, **kwargs)
self.destroyed.connect(self.onDestroyed)
def onDestroyed(self):
print 'onDestroyed invoked'
if __name__ == '__main__':
a = QtGui.QApplication(sys.argv)
w = MyWidget()
w.setWindowTitle('Test')
w.show()
a.exec_()
print 'app exit!'
当我启动应用程序然后关闭它时,输出是:
init MyWidget
app exit!
您可以连接来自您的
QObject
基类的destroyed
信号 小部件到您自己的类似析构函数的函数中,有一个技巧: 小部件需要设置“DeleteOnClose”属性:输出:
相关问题 更多 >
编程相关推荐