2010-07-13 1 views
1

Я не могу отправить сигнал, обновляющий диалог прогресса из QThread. я создал вещь, как это (из класса MainWindow):PyQt4: отправка пользовательского сигнала из потока в диалоговое окно выполнения

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

Я хотел бы сделать что-то так:

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

, а затем метод (слот) в главном окне:

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

самостоятельно или self.ui зависит, если и подклассы MainWindow, а затем начал setupUi

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

кажется правильным мне