我无法从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)
但进度对话框不会更新:(。
我做错了什么?
谢谢! 森
答案 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)
对我来说似乎是对的