2010-07-13 12 views
1

Je ne parviens pas à envoyer un signal mettant à jour une boîte de dialogue de progression à partir d'un QThread. Je mis en place la chose comme celui-ci (à partir de la classe MainWindow):PyQt4: Envoi d'un signal personnalisé d'un thread vers une boîte de dialogue de progression

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)")) 

puis, à partir de la fonction MyRun, j'essaie d'émettre le signal:

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

Mais les progrès de dialogue juste ne met pas à jour :(.

Qu'est-ce que je fais mal?

Merci! Nathan

Répondre

1

je ferais quelque chose de si:

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

et une méthode (fente) dans la fenêtre principale:

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

auto ou self.ui dépend si u ont le sous-classé mainWindow puis lancé setupUi

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

semble correct me