目錄
QRadioButton
常用屬性
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不具備排他機制