2010-08-15 58 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