基本Widgets(05):【类】QCheckBox[官翻]

QCheckBox Class

QCheckBox小部件提供了一个带有文本标签的复选框。

Header#include < QCheckBox >
qmakeQT += widgets
InheritsQAbstractButton
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()。

属性

  1. tristate : bool 复选框是否为三态复选框
    默认值是false,也就是说,复选框只有两种状态。

    Access functions:

    • bool isTristate() const
      void setTristate(bool y = true)

公共函数

构造析构

  1. QCheckBox(const QString &text, QWidget *parent = nullptr)
  2. QCheckBox(QWidget *parent = nullptr)
  3. virtual ~QCheckBox()

属性

  1. bool isTristate() const
  2. void setTristate(bool y = true)

选中

  1. Qt::CheckState checkState() const

  2. void setCheckState(Qt::CheckState state)

    enum Qt::CheckState 该枚举描述了可检查项、控件和小部件的状态。

    ConstantValueDescription
    Unchecked0该项未选中。
    PartiallyChecked1该项被部分选中。
    如果检查了层次模型中的一些(而不是所有)子项,则可以部分检查它们。
    Checked2选中该项。

重写的公共函数

  1. virtual QSize minimumSizeHint() const override
  2. virtual QSize sizeHint() const override

信号

  1. void stateChanged(int state) 当复选框的状态发生变化时,即当用户检查或取消检查它时,就会发出这个信号
    state包含复选框的新Qt::CheckState。

保护的函数

  1. void initStyleOption(QStyleOptionButton *option) const

重写的保护的函数

  1. virtual void checkStateSet() override
  2. virtual void nextCheckState() override
  3. virtual bool hitButton(const QPoint &pos) const override
  4. virtual bool event(QEvent *e) override
  5. virtual void mouseMoveEvent(QMouseEvent *e) override
  6. 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 有个三态选择,还有个状态改变的信号。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值