1
qt的信号槽除了一对一也可以一对多,比如多个按键的click信号链接一个槽函数。这个收就需要判断是哪一个按键发出的信号
2
sender()在QT里的原型是QObject::sender(),也就是对象,实例化的对象可以发送信号,返回发送信号的对象的指针,返回类型为QObject *。
3
pyqt里的话用起来很方便,直接self.sender()就可以直接得到了
if self.sender()== 对象:判断就行
class Table(QWidget):#表格
def __init__(self):
super(Table, self).__init__()
self.initUI()
def initUI(self):
self.setWindowTitle("test")
self.resize(350,200)
hor2=QHBoxLayout()
self.TableWidget=QTableWidget(1,3)
#表格头的显示与隐藏
self.TableWidget.verticalHeader().setVisible(False)
self.TableWidget.horizontalHeader().setVisible(False)
#在单元格内放置复选框
self.C=['comBox'+str(n) for n in range(3)]
for n in range(3):
self.C[n]=QComboBox()
self.C[n].addItems(['0','1','2'])
self.TableWidget.setCellWidget(0,n,self.C[n])
self.C[n].setCurrentIndex(-1)
self.C[n].activated[str].connect(self._slot)
hor2.addWidget(self.TableWidget)
self.setLayout(hor2)
def _slot(self,value):
if self.sender() == self.C[0]:
print('第一个复选框')
if self.sender() == self.C[1]:
print('第二个复选框')
if self.sender() == self.C[2]:
print('第三个复选框')
print('value:',value)
if __name__ == '__main__':
app=QApplication(sys.argv)
demo = Table()
demo.show()
sys.exit(app.exec_())
补充一下:
self.btn.pressed.connect(lambda: self.set_btn_val(self.sender()))
def set_btn_val(self):
if self.sender()==self.btn:
pass