在我们实际设计的时候,很多时候都会用到按钮,如果按钮个数过多,要一个一个写槽函数那是一件很麻烦的事情,外加上,很有可能我们的多个按钮需要互相通信,那么这无疑是更加加剧了编写槽函数的代码量。
所以,为了解决多个按钮问题,我们一般使用按钮组这个类,以方便信号处理。
#include<QButtonGroup>
this->buttonGroup = new QButtonGroup();
this->buttonGroup->addButton(pushButton1);
this->buttonGroup->addButton(pushButton2);
this->buttonGroup->addButton(pushButton3);
这样,我们便将3个按钮加入了按钮组。接下来就是分别处理信号。
void (QButtonGroup::*fun)(QAbstractButton*) = &QButtonGroup::bottonCliked;
QObject::connect(this->buttonGroup,fun,this,&slot);
/*void MainWindow::slot(QAbstractButton* button) //来分别处理不同信号
{
if(button == pushButton1)
{
do something;
}
if(button == pushButton2)
{
do something;
}
}*/
由于我们的QButtonGroup这个类中的bottonCliked信号是个重载函数,有两种参数,一个是QAbstractButton,另一个是int,所有我们使用显示函数指针来指定调用信号。
如果,按钮个数太多,要一个一个加入按钮组是一件很痛苦的事情,所以我们可以在设计中完美解决这一切,只需选中多个按钮,然后右键,选择加入按钮组就可以了。
网友评论