1 在UI界面中加入控件
2 對QRadioButton控件進行分組
QRadioButton的分組有多重方法,如采用組合框、QWidge等,下面介紹采用QButtonGroup方法來實現分組,好處是不影響QRadioButton在界面上的顯示(組合框分組方式會在界面上出現組合框,要以自己的需要選擇),以及方便ID的設置。
添加頭文件
#include <QButtonGroup>
#include <QDebug>
聲明QButtonGroup變量
private:
QButtonGroup *groupButton1;
QButtonGroup *groupButton2;
在窗體構造函數中初始化QButtonGroup,把相應的QRadioButton添加進來並設置ID
groupButton1=new QButtonGroup(this);
groupButton1->addButton(ui->apple_radioButton,0);
groupButton1->addButton(ui->banan_radioButton,1);
groupButton1->addButton(ui->pear_radioButton,2);
ui->apple_radioButton->setChecked(true); //默認選中apple_radioButton
groupButton2=new QButtonGroup(this);
groupButton2->addButton(ui->potato_radioButton,0);
groupButton2->addButton(ui->greenpepper_radioButton,1);
groupButton2->addButton(ui->spinach_radioButton,2);
ui->greenpepper_radioButton->setChecked(true);
3 多個QRadioButton控件響應同一個槽函數
在頭文件中聲明槽函數
public slots:
void slots_fruits();
void slots_vegetables();
在窗體構造函數中綁定信號和槽函數
//綁定信號和槽函數
connect(ui->apple_radioButton,SIGNAL(clicked(bool)),
this,SLOT(slots_fruits()));
connect(ui->banan_radioButton,SIGNAL(clicked(bool)),
this,SLOT(slots_fruits()));
connect(ui->pear_radioButton,SIGNAL(clicked(bool)),
this,SLOT(slots_fruits()));
//綁定信號和槽函數
connect(ui->potato_radioButton,SIGNAL(clicked(bool)),
this,SLOT(slots_vegetables()));
connect(ui->greenpepper_radioButton,SIGNAL(clicked(bool)),
this,SLOT(slots_vegetables()));
connect(ui->spinach_radioButton,SIGNAL(clicked(bool)),
this,SLOT(slots_vegetables()));
槽函數的實現
QRadioButton的槽函數中,不需要逐個檢查QRadioButton控件狀態,僅僅通過groupButton1->checkedId()來獲知哪一個QRadioButton控件被選中,其返回被選中控件的ID值。
void MainWindow::slots_fruits()
{
qDebug()<<"fruits"<<endl;
switch(groupButton1->checkedId())
{
case 0:
qDebug() <<"apple"<<endl;
break;
case 1:
qDebug() <<"banan_radioButton"<<endl;
break;
case 2:
qDebug() <<"pear_radioButton"<<endl;
break;
}
}
void MainWindow::slots_vegetables()
{
qDebug()<<"vegetables"<<endl;
switch(groupButton2->checkedId())
{
case 0:
qDebug() <<"potato_radioButton"<<endl;
break;
case 1:
qDebug() <<"greenpepper_radioButton"<<endl;
break;
case 2:
qDebug() <<"spinach_radioButton"<<endl;
break;
}
}
運行結果
參考資料
https://blog.csdn.net/CXP2205455256/article/details/44956051