做项目的时候需要用到多个信号链接一个槽,多个信号来自不同的控件,怎么能分辨出是哪个控件。看代码
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
btn1 = new QPushButton("btn1");
btn2 = new QPushButton("btn2");
btn3 = new QPushButton("btn3");
btn4 = new QPushButton("btn4");
connect(btn1,SIGNAL(clicked()),this,SLOT(button_Name()));
connect(btn2,SIGNAL(clicked()),this,SLOT(button_Name()));
connect(btn3,SIGNAL(clicked()),this,SLOT(button_Name()));
connect(btn4,SIGNAL(clicked()),this,SLOT(button_Name()));
QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(btn1);
layout->addWidget(btn2);
layout->addWidget(btn3);
layout->addWidget(btn4);
this->setLayout(layout);
}
void Widget::button_Name()
{
if (QPushButton* btn = dynamic_cast<QPushButton*>(sender())){
if(btn->text()==btn2->text())
{
qDebug() << "yiyang" << endl;
}
}
}
四个button按钮链接到一个槽函数button_Name()上,通过sender()函数判断是哪种控件发出的信号,我这里用的是QPushButton控件,
判断出是QPushButton按钮之后,再通过button的不同点判断出具体是哪个button。
当然也可以是不同的控件发出的信号,通过if去判断就行了。