7.6 QRadioButton控件


***【在线视频教程】***

好文章,来自【福优学苑@音视频+流媒体】

7.6 QRadioButton控件

简介

QRadioButton部件提供了一个带有文本标签的单选框(单选按钮)

好文章,来自【福优学苑@音视频+流媒体】

QRadioButton是一个可以切换选中(checked)或未选中(unchecked)状态的选项按钮。

单选框通常呈现给用户一个“多选一”的选择。也就是说,在一组单选框中,一次只能选中一个单选框。


单选框默认开启自动互斥(autoExclusive)。如果启用了自动互斥,属于同一个父部件的单选框的行为就和属于一个互斥按钮组的一样。如果你需要为属于同一父部件的单选框设置多个互斥按钮组,把它们加入QButtonGroup中。


每当一个按钮切换选中或未选中状态时,会发出的toggled()信号。

如果希望每个按钮切换状态时触发一个动作,连接到这个信号。

使用isChecked()来查看特定按钮是否被选中。


就像QPushButton一样,单选框可以显示文本,以及可选的小图标。

图标使用setIcon()来设置,文本可以在构造函数或通过setText()来设置。


在UI界面中加入QRadioButton控件

image.png

好文章,来自【福优学苑@音视频+流媒体】

对QRadioButton控件进行分组

QRadioButton的分组有多重方法,如采用组合框、QWidge等,下面介绍采用QButtonGroup方法来实现分组,好处是不影响QRadioButton在界面上的显示(组合框分组方式会在界面上出现组合框,要以自己的需要选择),以及方便ID的设置。

好文章,来自【福优学苑@音视频+流媒体】


添加头文件

#include <QButtonGroup>

#include <QDebug>


声明QButtonGroup变量

private:

    QButtonGroup *groupButton_friutes;

    QButtonGroup *groupButton_drinkings;


在窗体构造函数中初始化QButtonGroup,把相应的QRadioButton添加进来并设置ID


    /// friutes

    groupButton_friutes = new  QButtonGroup(this);

    groupButton_friutes->addButton(ui->radioButton_apple, 1);

    groupButton_friutes->addButton(ui->radioButton_banana, 2);

    groupButton_friutes->addButton(ui->radioButton_grape, 3);

    ui->radioButton_apple->setChecked(true);


    /// drinkings

    groupButton_drinkings = new  QButtonGroup(this);

    groupButton_drinkings->addButton(ui->radioButton_alcolhol, 11);

    groupButton_drinkings->addButton(ui->radioButton_beer, 12);

    groupButton_drinkings->addButton(ui->radioButton_wine, 13);

    ui->radioButton_wine->setChecked(true);



好文章,来自【福优学苑@音视频+流媒体】

多个QRadioButton控件响应同一个槽函数

在头文件中声明槽函数

private slots:

    void slots_fruits();

    void slots_drinkings();


好文章,来自【福优学苑@音视频+流媒体】

在窗体构造函数中绑定信号和槽函数

/// slots

    //绑定信号和槽函数

    connect(ui->radioButton_apple,SIGNAL(clicked(bool)),

            this,SLOT(slots_fruits()));

    connect(ui->radioButton_banana,SIGNAL(clicked(bool)),

            this,SLOT(slots_fruits()));

    connect(ui->radioButton_grape,SIGNAL(clicked(bool)),

            this,SLOT(slots_fruits()));


    //绑定信号和槽函数

    connect(ui->radioButton_alcolhol,SIGNAL(clicked(bool)),

            this,SLOT(slots_drinkings()));

    connect(ui->radioButton_beer,SIGNAL(clicked(bool)),

            this,SLOT(slots_drinkings()));

    connect(ui->radioButton_wine,SIGNAL(clicked(bool)),

            this,SLOT(slots_drinkings()));


image.png

槽函数的实现

QRadioButton的槽函数中,不需要逐个检查QRadioButton控件状态,仅仅通过groupButton1->checkedId()来获知哪一个QRadioButton控件被选中,其返回被选中控件的ID值。

好文章,来自【福优学苑@音视频+流媒体】


void Widget::slots_fruits()

{

    qDebug()<<"fruits:";

    switch(groupButton_friutes->checkedId())

       {

       case 1:

           qDebug() <<"苹果"<<endl;

           break;

       case 2:

           qDebug() <<"香蕉"<<endl;

           break;

       case 3:

           qDebug() <<"葡萄"<<endl;

           break;

       }

}

好文章,来自【福优学苑@音视频+流媒体】

void Widget::slots_drinkings()

{

    qDebug()<<"vegetables:";

    switch(groupButton_drinkings->checkedId())

       {

       case 11:

           qDebug() <<"啤酒"<<endl;

           break;

       case 12:

           qDebug() <<"白酒"<<endl;

           break;

       case 13:

           qDebug() <<"红酒"<<endl;

           break;

       }

}



好文章,来自【福优学苑@音视频+流媒体】
***【在线视频教程】***