目录
前言:
技能:
内容:
1. 布置界面
2.管理
3.槽函数
参考:
前言:
组合选择只能选择一个的单选框实现,以及管理组合单选框
技能:
<QRadioButton>
<QButtonGroup>
内容:
1. 布置界面
先在ui界面中拖个GroupBox,再在GroupBox里面拖几个Radio Button,拖动完后自动就实现了被放在一个GroupBox里面的Radio Button只会有一个被选择到,右侧对象可以显示出父类情况
2.管理
首先了解到<QButtonGroup>这个类可以方便管理多个Radio Button,具体了解可以看参考链接
回到头文件,添加代码,如果只有一个就不用用数组了,这里想用2个GroupBox,所以用数组
#include<QButtonGroup>
#include<QRadioButton>private:QButtonGroup *pGroup[2];
然后在MainWindow的构造函数中完成代码,解释在后
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);for(int i=0;i<2;i++){pGroup[i]=new QButtonGroup(this);}pGroup[0]->addButton(ui->radioButton,1);pGroup[0]->addButton(ui->radioButton_2,2);pGroup[0]->addButton(ui->radioButton_3,3);connect(pGroup[0],SIGNAL(idClicked(int)),this,SLOT(p_group(int)));ui->radioButton_2->setChecked(true);
//其余的pGroup[]同理}
先将所有pGroup初始化
然后把想放在一起的Radio Button添加到一个pGroup里,后面的数字表示自定对这个按钮的int编号,这个编号会方便后面对按钮的管理
连接槽函数并完成槽函数void MainWindow::p_group(int id),这里手动代码完成和连接,可以参考这个的后半部分3、4点->在VS2022中使用QT,后面举例槽函数。需要注意的是,SIGNAL在参考链接视频里用的是SIGNAL(buttonClicked(int)),可能是版本更新,现在Qt6的想用按钮的编号直接操作没有那个函数了,有SIGNAL(idClicked(int))
最后确认初始的选择是哪个按钮,也可以不做这个,刚开始无确认值
3.槽函数
在<QButtonGroup>管理下可以实现很多功能,比如知道哪个按钮被点击,代码如下
void MainWindow::p_group_0(int id)
{QString res;if(id>=1 && id<3){res=QString("分组1的radio %1").arg(id);}//qDebug()<<res;ui->label_2->setText(res);
}
哪个按钮被点,这里槽函数的参数就是之前编好号的哪个,并在label中输出对应的文本 ,
这一个槽函数可以管理所有按钮,只是每个GroupBox都需要connect()到这个函数,所以可以限制编号大小来确定是哪个GroupBox,当然也可以分开单独实现
参考:
【Qt学习系列】17_Qt单选框