Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。
前言:
单选按钮控件提供了一个带有文本标签的单选按钮,即单选框。单选按钮可以切换选中(checked)或未选中(unchecked)状态,通常使用在多选一的情况下,也就是在一组单选按钮中,只能选中其中一个,同时只有一个单选按钮处于选中(checked)状态。如果一个单选按钮被选中,之前被选中的按钮就会变成未选中(unchecked)状态。
QRadioButton类提供了一个文本标题(text label)和一个图标(small icon)。文本标题可以在构造函数中设置,也可以通过调用setText() 函数设置,而图标只能通过**setIcon()**函数来设置。
对QRadioButton进行分组:
为了让单选按钮之间互斥,必须对单选按钮进行分组。把多个单选按钮放在“同一个父窗体”或者“同一个按钮组”中实现了分组。
如果没有进行分组,那么相同父窗体的单选按钮都将具有相互排他性。如果想要在一个窗体实现展示多组单选按钮的效果,就需要显示地对它们进行分组,可以使用QGroupBox或者QButtonGroup实现,还可以使用组合框、QWidget等。建议使用QButtonGroup,因为它仅仅是一个容器,对于里面的子按钮,QButtonGroup提供了比QGroupBox更为方便的信号和槽机制方面的操作。
QRadioButton的信号:
- toggled():在单选按钮状态(开、关)切换时发出。
- clicked():单击单选按钮时发出。 一般在单选按钮状态改变时才有必要去响应,所以toggled()信号更适合状态监控。
需要注意的是: 单选按钮无论是被打开还是被关闭,都会发送一个toggled()信号,参数为bool,记录是开还是关,所以可以根据单选按钮的状态变化处理一些事情。
如果组内有很多个单选按钮,并且想跟踪toggled或clicked状态时,不需要逐个来建立关联,如果使用QButtonGroup来管理,可以用buttonToggled() 和buttonClicked() 来处理组内所有按钮的toggled()和clicked()。
QButtonGroup类:
QButtonGroup提供了一个抽象容器,可以在其中放置按钮控件,以便管理组中每个按钮的状态。
- addButton():在QButtonGroup中添加一个按钮。
- removeButton():在QButtonGroup中删除一个按钮。
void addButton(QAbstractButton *button, int id = -1);参数button为指向按钮对象的指针,id为要设置给按钮button的id号,如果id是-1,就会自动赋一个值给id。自动分配的id保证为负数,从-2开始。自己分配的id要使用正数,以免冲突。
分配id之后,可以通过QButtonGroup的成员函数checkedId() 来获得button的id。
QRadioButton的使用:
//创建在.h中
QButtonGroup *groupButton1;
//动态创建一个QButtonGroup
groupButton1 = new QButtonGroup(this);
//在QButtonGroup中添加三个radioButton,并分配id号
groupButton1->addButton(ui->radioButton1, 0);
groupButton1->addButton(ui->radioButton2, 1);
groupButton1->addButton(ui->radioButton3, 2);
//默认选中第三个radioButton
ui->radioButton2->setChecked(true);
//为三个radioButton添加信号和槽的连接
connect(ui->radioButton1, SIGNAL(clicked(bool)), this, SLOT(radioButton1Clicked()));
connect(ui->radioButton2, SIGNAL(clicked(bool)), this, SLOT(radioButton2Clicked()));
connect(ui->radioButton3, SIGNAL(clicked(bool)), this, SLOT(radioButton3Clicked()));