QCheckBox Class
QCheckBox小部件提供了一个带有文本标签的复选框。
Header | #include < QCheckBox > |
---|---|
qmake | QT += widgets |
Inherits | QAbstractButton |
Inherited By |
详细说明
QCheckBox是一个选项按钮,可以打开(选中)或关闭(未选中)。复选框通常用于表示应用程序中可以启用或禁用而不影响他人的特性。可以实现不同类型的行为。例如,QButtonGroup可以用于逻辑上对检查按钮进行分组,允许单独的复选框。然而,QButtonGroup不提供任何可视表示。
下面的图像进一步说明了排他和非排他复选框之间的区别。
排他 | 非排他 |
---|---|
当复选框被选中或清除时,它会发出信号stateChanged()。如果您希望在复选框每次更改状态时触发一个操作,请连接到这个信号。您可以使用isChecked()来查询复选框是否被选中。
除了通常的选中和未选中状态之外,QCheckBox还提供了第三种状态来表示“无更改”。当您需要为用户提供既不选中也不取消选中复选框的选项时,这是非常有用的。如果需要第三种状态,可以使用setTristate()来启用它,并使用checkState()来查询当前切换状态。
与QPushButton一样,复选框会显示文本,还可以显示一个小图标。这个图标是用setIcon()设置的。文本可以在构造函数中设置,也可以使用setText()。可通过在首选字符前加一个&符号来指定快捷键。例如:
QCheckBox *checkbox = new QCheckBox("C&ase sensitive", this);
本例中快捷键为“Alt+A”。详情请参阅QShortcut文档。要显示实际的&符,请使用“&&”。
重要继承函数:text(), setText(), text(), pixmap(), setPixmap(), accel(), setAccel(), isToggleButton(), setDown(), isDown(), isOn(), checkState(), autoRepeat(), isExclusiveToggle(), group(), setAutoRepeat(), toggle(), pressed(), released(), clicked(), toggled(), checkState(), stateChanged()。
属性
-
tristate : bool 复选框是否为三态复选框
默认值是false,也就是说,复选框只有两种状态。Access functions:
- bool isTristate() const
void setTristate(bool y = true)
- bool isTristate() const
公共函数
构造析构
- QCheckBox(const QString &text, QWidget *parent = nullptr)
- QCheckBox(QWidget *parent = nullptr)
- virtual ~QCheckBox()
属性
- bool isTristate() const
- void setTristate(bool y = true)
选中
-
Qt::CheckState checkState() const
-
void setCheckState(Qt::CheckState state)
enum Qt::CheckState 该枚举描述了可检查项、控件和小部件的状态。
Constant Value Description Unchecked 0 该项未选中。 PartiallyChecked 1 该项被部分选中。
如果检查了层次模型中的一些(而不是所有)子项,则可以部分检查它们。Checked 2 选中该项。
重写的公共函数
- virtual QSize minimumSizeHint() const override
- virtual QSize sizeHint() const override
信号
- void stateChanged(int state) 当复选框的状态发生变化时,即当用户检查或取消检查它时,就会发出这个信号
state包含复选框的新Qt::CheckState。
保护的函数
- void initStyleOption(QStyleOptionButton *option) const
重写的保护的函数
- virtual void checkStateSet() override
- virtual void nextCheckState() override
- virtual bool hitButton(const QPoint &pos) const override
- virtual bool event(QEvent *e) override
- virtual void mouseMoveEvent(QMouseEvent *e) override
- virtual void paintEvent(QPaintEvent *) override
实例
#include "Widget.h"
#include <QtWidgets>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QCheckBox cb("QCheckBox");
cb.setTristate (true);
QObject::connect (&cb,&QCheckBox::stateChanged ,[&](int state){
qDebug() <<(Qt::CheckState) state <<"\t"<< state;
});
// QObject::connect (&cb,&QAbstractButton::clicked ,[&]{
// qDebug() << cb.checkState ();
// });
cb.show ();
return a.exec();
}
总结
QCheckBox 有个三态选择,还有个状态改变的信号。