1. 程式人生 > 其它 >基本Widgets(05):【類】QCheckBox[官翻]

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

技術標籤:Qt

文章目錄

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 有個三態選擇,還有個狀態改變的訊號。