我正在學習信號和插槽,我很困惑這種情況。信號和插槽在兩個不同的類
上下文:我有一個方法在ClassA誰需要發出一個信號(從工作線程)到ClassB(在主線程)。工作線程執行一些繁重的處理,而主線程更新UI中的進度條。我需要工作線程將信號傳遞給主線程以更新UI。
我不知道如何讓信號在兩個不同的類之間傳遞。現在我讓第一個類實例化一個信號對象(Communicate),將它連接到第二個類中的方法,然後在準備就緒時發出。這是導致seg故障,很明顯我做錯了什麼。
我有以下信號類:
class Communicate(QtCore.QObject):
update_progress = QtCore.Signal()
這裏是ClassA的,工作線程的方法,包括:
def methodInClassA(self, filename):
c = Communicate()
c.update_progress.connect(ClassB.set_progress)
print "emitting"
c.update_progress.emit()
...
這裏在ClassB的,所述一個更新所述進度條的方法UI:
class ClassB(QtGui.QDialog, classB.Ui_Dialog):
def __init__(self, parent=None):
super(ClassB, self).__init__(parent)
self.setupUi(self)
def set_progress(self):
print "RECEIVED"
sender = self.sender()
self.progressBar.setValue(100)
我正在讓主線程創建一個ClassB的實例,並且我有一個方法來更新該類對象的進度值。我將這個信號連接到這個方法。這固定了它。謝謝! – Diana