核
取方塊(CheckBox)是可以進行選項複選的元件,單選鈕(RadioButton)是只能進行選項單選的元件,在Qt中分別使用QCheckBox
與QRadioButton來負責,QRadioButton必須使用QGroupBox來加以群組,來表示哪些選項為一個群組,彼此互斥,同時間只能選
擇一個。
以下是個簡單的元件配置示範:
#include <QApplication> #include <QWidget> #include <QButtonGroup> #include <QCheckBox> #include <QRadioButton> #include <QGroupBox> #include <QVBoxLayout>
int main(int argc, char *argv[]) { QApplication app(argc, argv);
QWidget *window = new QWidget; window->setWindowTitle("QCheckBox & QRadioButton"); window->resize(350, 100); QVBoxLayout *windowLayout = new QVBoxLayout;
// 核取方塊 QCheckBox *check1 = new QCheckBox; check1->setChecked(true); check1->setText("Java is good!"); QCheckBox *check2 = new QCheckBox("C++ is good!"); QCheckBox *check3 = new QCheckBox("Well! Nothing is good!"); check3->setTristate(true); windowLayout->addWidget(check1); windowLayout->addWidget(check2); windowLayout->addWidget(check3);
// 單選鈕 QGroupBox *box = new QGroupBox("Favorite OS"); QRadioButton *radio1 = new QRadioButton("Linux OS"); QRadioButton *radio2 = new QRadioButton("Windows OS"); QRadioButton *radio3 = new QRadioButton("Mac OS"); QVBoxLayout *radioLayout = new QVBoxLayout; radioLayout->addWidget(radio1); radioLayout->addWidget(radio2); radioLayout->addWidget(radio3); // 三個單選鈕為一個群組 box->setLayout(radioLayout);
windowLayout->addWidget(box); window->setLayout(windowLayout); window->show(); return app.exec(); }
QCheckBox除了預設的核取與非核取狀態之外,還可以第三個狀態,這可以使用setTristate()方法來設定,而
單選鈕的配置部份,首先將單選鈕元件加入QVBoxLayout中作版面配置,然後設定其為QGroupBox的版面管理,如此一來,
QVBoxLayout中的三個單選鈕就是在同一個群組之中。
下圖為執行的參考畫面,其中第三個核取方塊為第三個選中狀態,預設的核取與非核取狀態可以使用isChecked()來得知,第三個選中狀態可以使用isTristate()來得知:

|
|