import test
class QThreadEx(QtCore.QThread):
def __init__(self, parent = None):
super(QThreadEx, self).__init__(parent)
def run(self):
self.exec_()
class waitSerchDialog(QtGui.QDialog):
def __init__(self, parent = None):
super(waitSerchDialog, self).__init__(parent)
self.t = QThreadEx() //创建新线程
self.test = test.test() //创建test对象
self.test.moveToThread(self.t) //加入新线程
self.test.connect(self.t, QtCore.SIGNAL("started()"), QtCore.SLOT("do_test()")) //线程开始时调用do_test()
self.test.finish.connect(self.t.quit)
# self.test.connect(self.test, QtCore.SIGNAL("finished()"), self.t, QtCore.SLOT("quit()"))
self.testGroup = QtGui.QGroupBox()
self.button = QtGui.QPushButton(self.testGroup)
mainLayout = QtGui.QVBoxLayout()
mainLayout.addWidget(self.testGroup)
self.setLayout(mainLayout)
self.setWindowTitle(u"系统配置")
self.t.start()
另外在test.py中定义了一个singal: finish,在do_test()结束时用emit发出信号
把do_test()做成了slot
像上面那样的代码,我在do_test()发出自定义的finish信号之后又用print进行测试,发现print依然能够
打印出东西。
故想问QThread自带的finished()信号是什么时候发出的?
另外自带的quit()槽是否会立即杀死线程,还是别的作用?我上面那样去调用有
没有错误?
[ 此帖被weakness_kh在2011-05-06 16:28重新编辑 ]