7.6 QRadioButton控件
好文章,来自【福优学苑@音视频+流媒体】
7.6 QRadioButton控件
简介
QRadioButton部件提供了一个带有文本标签的单选框(单选按钮)。
QRadioButton是一个可以切换选中(checked)或未选中(unchecked)状态的选项按钮。
单选框通常呈现给用户一个“多选一”的选择。也就是说,在一组单选框中,一次只能选中一个单选框。
单选框默认开启自动互斥(autoExclusive)。如果启用了自动互斥,属于同一个父部件的单选框的行为就和属于一个互斥按钮组的一样。如果你需要为属于同一父部件的单选框设置多个互斥按钮组,把它们加入QButtonGroup中。
每当一个按钮切换选中或未选中状态时,会发出的toggled()信号。
如果希望每个按钮切换状态时触发一个动作,连接到这个信号。
使用isChecked()来查看特定按钮是否被选中。
就像QPushButton一样,单选框可以显示文本,以及可选的小图标。
图标使用setIcon()来设置,文本可以在构造函数或通过setText()来设置。
在UI界面中加入QRadioButton控件
对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()));
槽函数的实现
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;
}
}
好文章,来自【福优学苑@音视频+流媒体】
***【在线视频教程】***