Qt—QCheckBox 使用總結


轉載自[一去、二三里]的Qt 之 QCheckBox

簡述

QCheckBox 繼承自 QAbstractButton,它提供了一個帶文本標簽的復選框。

QCheckBox(復選框)和QRadioButton(單選框)都是選項按鈕。這是因為它們都可以在開(選中)或者關(未選中)之間切換。區別是對用戶選擇的限制:單選框定義了 “多選一” 的選擇,而復選框提供的是 “多選多” 的選擇。

盡管在技術上可以通過復選框來實現單選框的行為,反之亦然,但還是強烈建議使用眾所周知的約定。

詳細描述

只要復選框被選中或者清除,都會發射一個 stateChanged() 信號。如果想在復選框狀態改變的時候觸發一個行為,請連接這個信號,可以使用 isChecked() 來查詢復選框是否被選中。

除了常用的選中和未選中兩個狀態,QCheckBox 還可選地提供了第三種狀態(半選)來表明 “沒有變化”。當需要給用戶一個選中或者未選中復選框的選擇時,這是很有用的。如果需要第三種狀態,可以通過 setTristate() 來使它生效,並使用 checkState() 來查詢當前的切換狀態。

和 QPushButton 一樣,復選框可以顯示文本或者圖標。文本可以通過構造函數或者 setText() 來設置,圖標可以通過 setIcon() 來設置。

QCheckBox *checkbox = new QCheckBox("C&ase sensitive", this);

共有函數

  • Qt::CheckState checkState() const

    返回復選框的選中狀態。如果不需要三態的支持,可以使用QAbstractButton::isChecked(),它返回一個布爾值。

  • bool isTristate() const
    復選框是否為一個三態復選框。默認的是false,也就是說復選框只有兩個狀態。

  • void setCheckState(Qt::CheckState state)
    設置復選框的選中狀態。如果不需要三態的支持,可以使用QAbstractButton:setChecked(),它接受一個布爾值。

  • void setTristate(bool y = true)
    設置復選框為一個三態復選框。

信號

  • void stateChanged(int state)
    當復選框狀態發生改變,這個信號就會被發射。即:用戶選中或者取消選中。

示例

構造一個復選框 QCheckBox,然后使用 setTristate() 開啟三態模式。

QCheckBox *pCheckBox = new QCheckBox(this);
m_pLabel = new QLabel(this);

m_pLabel->setText("Click CheckBox...");
pCheckBox->setText(QString::fromLocal8Bit("三態復選框"));

// 開啟三態模式
pCheckBox->setTristate();  

// 連接信號槽
connect(pCheckBox, SIGNAL(stateChanged(int)), this, SLOT(onStateChanged(int)));

槽函數,判斷當前復選框狀態,其中包括:選中(Qt::Checked)、半選(Qt::PartiallyChecked)、未選中(Qt::Unchecked)。

void MainWindow::onStateChanged(int state)
{
    if (state == Qt::Checked) // "選中"
    {
        m_pLabel->setText("Checked");
    }
    else if(state == Qt::PartiallyChecked) // "半選"
    {
        m_pLabel->setText("PartiallyChecked");
    }
    else // 未選中 - Qt::Unchecked
    {
        m_pLabel->setText("Unchecked");
    }
}

QSS

復選框樣式。

QCheckBox{
        spacing: 5px;
        color: white;
}
QCheckBox::indicator {
        width: 17px;
        height: 17px;
}
QCheckBox::indicator:enabled:unchecked {
        image: url(:/Images/checkBox);
}
QCheckBox::indicator:enabled:unchecked:hover {
        image: url(:/Images/checkBoxHover);
}
QCheckBox::indicator:enabled:unchecked:pressed {
        image: url(:/Images/checkBoxPressed);
}
QCheckBox::indicator:enabled:checked {
        image: url(:/Images/checkBoxChecked);
}
QCheckBox::indicator:enabled:checked:hover {
        image: url(:/Images/checkBoxCheckedHover);
}
QCheckBox::indicator:enabled:checked:pressed {
        image: url(:/Images/checkBoxCheckedPressed);
}
QCheckBox::indicator:enabled:indeterminate {
        image: url(:/Images/checkBoxIndeterminate);
}
QCheckBox::indicator:enabled:indeterminate:hover {
        image: url(:/Images/checkBoxIndeterminateHover);
}
QCheckBox::indicator:enabled:indeterminate:pressed {
        image: url(:/Images/checkBoxIndeterminatePressed);
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM