目录
clicked(bool)信号、pressed信号、released信号
QRadioButton
QRadioButton是一个单选按钮,也是继承自QAbstractButton(继承自QWidget)
常用属性
checkable 是否能选中
checked 是否已经被选中
autoExclusive 是否排他(QRadioButton单选按钮,默认排他)
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
// 禁用 其他 选项
//ui->radioButton_other->setCheckable(false);
ui->radioButton_male->setEnabled(false);
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_radioButton_male_clicked()
{
ui->label->setText("您选择的性别为:男");
}
void Widget::on_radioButton_female_clicked()
{
ui->label->setText("您选择的性别为:女");
}
void Widget::on_radioButton_other_clicked()
{
ui->label->setText("您选择的性别为:其他");
}
checkable只是让按钮不被选中,但是任然可以响应点击事件,所以可以直接使用setEnable(false);
clicked(bool)信号、pressed信号、released信号
注:一次clicked = 一次pressed + 一次released
点击了不一定选中,比如之前我们设置了setCheckable(false),任然是可以响应点击事件,但是这里的checked就是false;
toggled触发条件:第一次被选中、选中其他radioButton因为排他性触发,参数为false
小项目
基于QRadioButton实现一个模拟点餐的小项目(汉堡、小食、饮料多选一)
问题:RadioButton默认是排他的,导致我们选择汉堡的时候会影响小食和饮料
解决:QButtonGroup为按钮分组,组内排他
QCheckBox
相比于QRadioButton,QCheckBox不具备排他机制