QCheckBox是Qt框架中常用的复选框控件,它提供了三种不同的状态:未选中、选中和部分选中。本文将详细介绍这三种状态的含义、使用方法和代码示例,帮助读者更好地理解和应用QCheckBox控件。
一、QCheckBox 类的成员比较简单, 如下所示
①、 tristate: bool 访问函数: bool isTristate() const; void setTristate(bool y=true);
该属性保存复选按钮是否为三态按钮,默认为 false。 注意:属性的设置函数 setTristate
只能设置此按钮具有三态按钮的形式,但不能使该按钮呈现出第三种状态,即按钮前
面的小方框内不会有小黑方框的填充,但点击该按钮,会在三种状态间变换。 设置按
钮的状态应使用下面介绍的成员函数 setCheckState()。
②、 QCheckBox(QWidget* parent = Q_NULLPTR); //构造函数
QCheckBox(const QString &text , QWidget* parent = Q_NULLPTR);
③、 Qt::CheckState checkState() const; //返回复选框的选中状态。
④、 void setCheckState(Qt::CheckState state);
设 置 复 选 按 钮 的 状 态 为 state , 该 函 数 可 设 置 复 选 按 钮 的 三 种 状 态 ,
QAbstractButton::setChecked()只能设置两种状态。 Qt::CheckState 枚举如下表
Qt::CheckState 枚举(无标志) | ||
枚举成员 | 值 | 说明 |
Qt::Unchecked | 0 | 未选中 |
Qt::PartiallyChecked | 1 | 部分被选中,一个项目中的子项目被选中(但不是全部),则该项目 |
Qt::Checked | 2 | 选中 |
二、void stateChanged(int state); //信号
当复选按钮的状态发生变化时发送该信号。 若复选按钮具有三态形式,则按钮会在“选
中、未选中、部分选中”三种状态间变化,只要这三种状态变化都会发送该信号,但
QAbstractButton::toggled()信号在三种状态间变化时,则不一定会发送。
三、三种状态
1、未选中状态(0):
未选中状态是QCheckBox的默认状态,表示选项未被选中。在这种状态下,复选框为空心,并且其isChecked()方法返回false。当用户点击复选框时,QCheckBox会切换到选中状态。
// 创建一个QCheckBox对象
QCheckBox *checkBox = new QCheckBox("未选中状态", this);
// 设置默认状态为未选中
checkBox->setChecked(false);
2、选中状态(2):
选中状态表示用户已经选中了该选项。在这种状态下,复选框为实心,并且其isChecked()方法返回true。当用户点击复选框时,QCheckBox会切换到未选中状态。
QCheckBox *checkBox = new QCheckBox("选中状态", this);
// 设置默认状态为选中
checkBox->setChecked(true);
3、部分选中状态(1):
部分选中状态是QCheckBox特有的一种状态,在某些场景下非常有用。它表示选项的状态不确定,既不是完全选中也不是完全未选中。在这种状态下,复选框为一个实心的矩形,表示选项的状态不确定。其isChecked()方法返回false。
QCheckBox *checkBox = new QCheckBox("部分选中状态", this);
// 设置为部分选中状态
checkBox->setTristate(true);
checkBox->setCheckState(Qt::PartiallyChecked);
四、复选按钮的第三状态(见右图 Qt5.10.1 的选中状态):是指除了选中和未选中状态之外的第三种状态,这种状态用来指示“不变”,表示用户既不选中也不取消选中该复选按钮。可使用 setTristate()函数启用这种状态,使用 checkState()检查按钮的当前状态。