2010-08-15 136 views
2

我可以連接兩個不同類的對象嗎?PyQt的Signal/SLOT不同類

可以說,我想按鈕1的點擊()信號來清除2號線

class A(QGroupBox): 
    def __init__(self, parent=None): 
     super(A, self).__init__(parent) 
     self.button1= QPushButton('bt1') 
     self.button1.show() 

class B(QGroupBox): 
    def __init__(self, parent=None): 
     super(B, self).__init__(parent) 
     self.line2 = QLineEdit() 
     self.line2.show() 

ob1 = A() 
ob2 = B() 

回答

3

是,創建在綁到對象A.注意一個信號connect是如何被調用對象B的方法(這只是一個例如):

self.connect(self.okButton, QtCore.SIGNAL("clicked()"), 
       self, QtCore.SLOT("accept()")) 

第三個參數是帶有插槽的對象和插槽名稱的第四個參數。發送和接收對象肯定可以不同。

+0

高清obconnect(個體經營,OB2): self.connect(self.button1,SIGNAL( '點擊()'),ob2.line,SLOT( '清()')) ob1.obconnect(OB2) 你的意思是這樣的? – 2010-08-15 05:23:53

+0

@redouane:差不多。我不建議直接從ob1訪問ob2的屬性 - 最好將這個交互封裝在ob2本身的方法中 – 2010-08-15 05:27:58

+1

這可以在非古老的PyQt版本中寫得更簡單:'self.okButton.clicked.connect(self.accept )' – Macke 2011-04-19 15:03:34