Qt的Radio Button(单选按钮)

Posted manual-linux

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt的Radio Button(单选按钮)相关的知识,希望对你有一定的参考价值。

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






以上是关于Qt的Radio Button(单选按钮)的主要内容,如果未能解决你的问题,请参考以下文章

elementUI单选框按钮样式

混合单选按钮和 text_field

如何更改a的颜色with a radio button?

Android:为啥 Radio Group 中的 Radio Button 总是为任何选定的项目返回 false?

导轨视图中的多组单选按钮

单选按钮(带有单击事件)未在 Firefox 中传递参数