前言
场景:如果QT界面上面有许多按钮,如果一个按钮连接一个信号对应一个槽函数,那么函数太多了,代码结构乱
以下是本篇文章正文内容,下面案例可供参考
一、使用步骤
1.初始化
代码如下(示例):
void MainWindow::InitForm() //初始化界面
{
//设置头部区域按钮
QList<QPushButton *> pbtns = ui->widg_Heade->findChildren<QPushButton *>(); //找到所有按钮
foreach(QPushButton *btn, pbtns) //循环List中所有的按钮
{
qDebug()<<btn;
// btn->iconSize(32,32);
// btn->setCheckable(true);
btn->setChecked(true);
connect(btn,SIGNAL(clicked()),this,SLOT(buttonClick())); //每一个按钮连接槽函数
}
}
2.槽函数
代码如下(示例):
void MainWindow::InitForm() //初始化界面
{
//设置头部区域按钮
QList<QPushButton *> pbtns = ui->widg_Heade->findChildren<QPushButton *>(); //找到所有按钮
foreach(QPushButton *btn, pbtns) //循环List中所有的按钮
{
qDebug()<<btn;
// btn->iconSize(32,32);
// btn->setCheckable(true);
btn->setChecked(true);
connect(btn,SIGNAL(clicked()),this,SLOT(buttonClick())); //每一个按钮连接槽函数
}
}
void MainWindow::buttonClick() //电机按钮的槽函数
{
qDebug()<<"进入槽函数";
QPushButton *bt = (QPushButton *)sender(); //返回这个发射信号控件指针
QString name = bt->text(); //获取控件文本
QList<QPushButton *> pbtns = ui->widg_Heade->findChildren<QPushButton *>(); //找到所有按钮
foreach(QPushButton *btn, pbtns)
{
if(btn == bt)
{
btn->setChecked(true);
}
else{
btn->setChecked(false);
}
}
if(name=="主界面")
{
ui->stackedWidget->setCurrentWidget(ui->stack_main); //显示主界面
}else if(name=="TL系统"){
ui->stackedWidget->setCurrentWidget(ui->stack_tl); //显示主界面
}
}