微小店适合卖做分类网站吗,网上商城平台有哪些,手机网站制作流程图,wordpress怎么取消谷歌字体文章目录 1 属性和方法1.1 文本1.2 三态1.3 自动排他1.4 信号和槽 2 实例2.1 布局2.2 代码实现 Qt中的复选按钮类是QCheckBox它和单选按钮很相似#xff0c;单选按钮常用在“多选一”的场景#xff0c;而复选按钮常用在多选多的场景比如喜欢的水果选项中#xf… 文章目录 1 属性和方法1.1 文本1.2 三态1.3 自动排他1.4 信号和槽 2 实例2.1 布局2.2 代码实现 Qt中的复选按钮类是QCheckBox它和单选按钮很相似单选按钮常用在“多选一”的场景而复选按钮常用在多选多的场景比如喜欢的水果选项中可以在“苹果/桃/梨/橘子/香蕉”中选择多个。 1 属性和方法
QRadioButton有很多属性完整的可查看帮助文档。这里列出常用的属性和方法。
1.1 文本
这两个是其父类QAbstractButton中的属性和方法因此QPushButton、QRadioButton、QCheckBox都具有该属性
// 获取和设置显示的文本
QString text() const;
void setText(const QString text);1.2 三态
单选按钮有选中Checked和非选中UnChecked这两种状态。
而复选按钮可以有三种状态
Qt::Checked 选中Qt::Unchecked 非选中Qt::PartiallyChecked 半选中比如当一组复选按钮中只选择了部分时可以设置其父项为半选状态如下
可以设置复选按钮是否支持三态如下
// 用于获取和设置是否支持三态
bool inTristate() const;
void setTristate(bool y true); 如果不支持三态使用方法单选按钮一样只有选中Checked和非选中unchecked两种状态没有半选中状态PartiallyChecked)
此时可以使用如下获取复选按钮是否选中
// 获取和设置复选按钮是否选中: checked / unchecked
bool isChecked() const;
void setChecked(bool);如果支持三态除了选中Checked和非选中unchecked两种状态还有半选中状态PartiallyChecked此时可以使用如下获取复选按钮的状态
// 设置和获取复选按钮的状态
Qt::CheckState checkState() const;
void setCheckState(Qt::CheckState state);1.3 自动排他
复选按钮同样可以设置是否自动排他入下
// 获取和设置自动排他
bool autoExclusive() const;
void setAutoExclusive(bool)我们前面说过复选按钮实现的是“多选多因此复选按钮的该属性默认是禁能的 尽管在技术上可以通过复选框来实现单选框的行为也可以通过单选框来实现复选框的行为但还是强烈建议使用众所周知的约定。
1.4 信号和槽
按钮在按下和抬起的过程中会发射多个信号。
// 单选按钮 QRadioButton 被点击会发出该信号
void clicked();// 当复选按钮的选中状态发生改变时会发射该信号
// 所谓状态改变是指在 Checked / UnChecked / PartiallyChecked 之间状态改变
void stateChanged(int state);2 实例
该案例演示单选按钮的属性以及信号槽 2.1 布局
在Ul设计师界面拖拽对应的控件修改显示的文字、控件的name然后完成布局 2.2 代码实现
// 在Widget.cpp 文件中#include widget.h#include ui_widget.hWidget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) {ui-setupUi(this);// stateChanged按钮状态发生改变就发射信号connect(ui-cbApple, QCheckBox::stateChanged, this,Widget::onStateChanged);connect(ui-cbBanana, QCheckBox::stateChanged, this,Widget::onStateChanged);connect(ui-cbOrange, QCheckBox::stateChanged, this,Widget::onStateChanged);connect(ui-cbPeach, QCheckBox::stateChanged, this,Widget::onStateChanged);connect(ui-cbPear, QCheckBox::stateChanged, this,Widget::onStateChanged);
}Widget::~Widget() {delete ui;
}void Widget::onStateChanged() {QString s;// 获取是否选择状态 选中返回true 未选择返回falsebool appleChecked ui-cbApple-isChecked();bool bananaChecked ui-cbBanana-isChecked();bool orangeChecked ui-cbOrange-isChecked();bool peachChecked ui-cbPeach-isChecked();bool pearChecked ui-cbPear-isChecked();// 实现cbAll功能if (appleChecked bananaChecked orangeChecked peachChecked pearChecked) {// 全部选中ui-cbAll-setCheckState(Qt::Checked);} else if (!(appleChecked || bananaChecked || orangeChecked ||peachChecked || pearChecked)) {// 全部未选中ui-cbAll-setCheckState(Qt::Unchecked);} else {// 部分选中ui-cbAll-setCheckState(Qt::PartiallyChecked);}// 实现文本框输出功能//选中状态就输出文字if (appleChecked) {s ui-cbApple-text() ;}if (bananaChecked) {s ui-cbBanana-text() ;}if (orangeChecked) {s ui-cbOrange-text() ;}if (peachChecked) {s ui-cbPeach-text() ;}if (pearChecked) {s ui-cbPear-text() ;}ui-leResult-setText(s);
}void Widget::on_cbAll_clicked() {// 手动点击时不能出现半选状态// 设置不能是半选状态ui-cbAll-setTristate(false);// 获取cbAll状态int state ui-cbAll-checkState();if (state Qt::Checked) {// 全部选中ui-cbApple-setChecked(true);ui-cbBanana-setChecked(true);ui-cbOrange-setChecked(true);ui-cbPeach-setChecked(true);ui-cbPear-setChecked(true);} else if (state Qt::Unchecked) {// 全部未选中ui-cbApple-setChecked(false);ui-cbBanana-setChecked(false);ui-cbOrange-setChecked(false);ui-cbPeach-setChecked(false);ui-cbPear-setChecked(false);}
}