PyQt4:从线程向进度对话框发送自定义信号

时间:2010-07-13 18:57:19

标签: signals pyqt4

我无法从QThread发送更新进度对话框的信号。 我设置了这样的东西(来自MainWindow类):

self.progressDialog = QtGui.QProgressDialog("Packing ...", QtCore.QString(), 0,100, self.parent_)
self.thread = QtCore.QThread(parent = self.parent_)
self.thread.run = myRun
self.thread.start()
self.thread.QtCore.connect(self.thread, QtCore.SIGNAL("updateProgress"), self.progressDialog, QtCore.SLOT("setProgress(int progress, int totalSteps)"))

然后,在myRun函数中,我尝试发出信号:

self.thread.emit(QtCore.SIGNAL("updateProgress"),progress,total)

但进度对话框不会更新:(。

我做错了什么?

谢谢! 森

1 个答案:

答案 0 :(得分:1)

我会这样做:

self.connect(self.thread, QtCore.SIGNAL("progressUpdated"), self.updateProgress)

然后是主窗口中的方法(插槽):

  def updateProgress(self, progress):
    self.ui.progressBar.setValue(progress) 
    self.ui.progressBar.repaint()

self或self.ui取决于你是否已经将mainWindow子类化,然后启动了setupUi

self.thread.emit(QtCore.SIGNAL("updateProgress"),progress)

对我来说似乎是对的