2010-08-15 1 views
2

다른 클래스에있는 두 개의 객체를 연결할 수 있습니까?PyQt의 신호/SLOT 다른 클래스

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

예, (connect를 호출하는 방법을 객체 A.주의의 신호에 묶여 객체 B의 방법을 만들이 단지이다 내가 단추 1의의는 2 호선을 취소()을 클릭 신호 싶은 말은 할 수 있습니다 예 :

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

세 번째 인수는 슬롯이있는 개체이고 네 번째 슬롯은 슬롯 이름입니다. 송수신 대상은 확실히 다를 수 있습니다.

+0

데프 obconnect (자기, OB2) : self.connect (self.button1는, 신호가 ('클릭()'), ob2.line, SLOT()() 분명히 ') ob1.obconnect (OB2) u는 다음과 같은 의미입니까? –

+0

@ redouane : 거의. ob2에서 ob2의 속성에 직접 액세스하는 것을 권장하지 않습니다 - ob2 자체의 메소드에서이 상호 작용을 캡슐화하는 것이 더 좋습니다 –

+1

이것은 고대가 아닌 PyQt 버전에서보다 간단하게 작성할 수 있습니다 :'self.acButton.clicked.connect (self.accept)' – Macke