C++ Qt開發(fā)之CheckBox多選框組件的用法詳解
Qt 是一個(gè)跨平臺(tái)C++圖形界面開發(fā)庫(kù),利用Qt可以快速開發(fā)跨平臺(tái)窗體應(yīng)用程序,在Qt中我們可以通過(guò)拖拽的方式將不同組件放到指定的位置,實(shí)現(xiàn)圖形化開發(fā)極大的方便了開發(fā)效率,本章將重點(diǎn)介紹CheckBox單行輸入框組件的常用方法及靈活運(yùn)用。
QCheckBox 是 Qt 中用于實(shí)現(xiàn)復(fù)選框的組件,它提供了豐富的功能和靈活性。與之前文章中的RadioButton組件不同,CheckBox組件支持多項(xiàng)選擇以及三態(tài)支持,即可以是選中、未選中或半選中的狀態(tài)。
下面是QCheckBox的主要方法的概述和表格形式:
方法名 | 描述 |
---|---|
QCheckBox(QWidget *parent = nullptr) | 構(gòu)造函數(shù),創(chuàng)建一個(gè) QCheckBox 組件。 |
isChecked() const | 返回復(fù)選框的當(dāng)前狀態(tài),選中返回 true,否則返回 false。 |
setCheckState(Qt::CheckState state) | 設(shè)置復(fù)選框的狀態(tài),可以是 Qt::Unchecked、Qt::PartiallyChecked 或 Qt::Checked。 |
checkState() const | 返回復(fù)選框的當(dāng)前狀態(tài),枚舉類型 Qt::CheckState。 |
setTristate(bool) | 啟用或禁用三態(tài)復(fù)選框的功能。 |
isTristate() const | 返回是否啟用了三態(tài)復(fù)選框的功能。 |
setCheckable(bool checkable) | 設(shè)置復(fù)選框是否可以被選中,true 表示可以選中,false 表示不能選中。 |
isChecked() const | 返回復(fù)選框的當(dāng)前狀態(tài),選中返回 true,否則返回 false。 |
setChecked(bool check) | 設(shè)置復(fù)選框的狀態(tài),true 表示選中,false 表示未選中。 |
text() const | 返回復(fù)選框的文本標(biāo)簽。 |
setText(const QString &text) | 設(shè)置復(fù)選框的文本標(biāo)簽。 |
stateChanged(int) | 復(fù)選框狀態(tài)變化時(shí)發(fā)射的信號(hào),參數(shù)是枚舉類型 Qt::CheckState,可以是 Qt::Unchecked、Qt::PartiallyChecked 或 Qt::Checked。 |
這里分別演示一下選擇框組件的使用方法,首先展示如何設(shè)置三態(tài)選擇框,然后再展示一下如何通過(guò)一個(gè)選擇框控制子選擇框的狀態(tài),如下圖是該程序的布局。
首先在主構(gòu)造函數(shù)MainWindow
中通過(guò)使用setTristate()
將前三個(gè)半選框設(shè)置為三態(tài)狀態(tài),并使用setEnabled()
將前三個(gè)選擇框設(shè)置為可選擇狀態(tài),代碼如下所示;
#include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); // 啟用三態(tài)狀態(tài)并設(shè)置為可選擇 ui->checkBox_a->setTristate(); ui->checkBox_b->setTristate(); ui->checkBox_c->setTristate(); // 設(shè)置為可選狀態(tài) ui->checkBox_a->setEnabled(true); ui->checkBox_b->setEnabled(true); ui->checkBox_c->setEnabled(true); } MainWindow::~MainWindow() { delete ui; }
接著我們分別為三個(gè)選擇框配置選擇事件,通過(guò)在半選框中右鍵選中stateChanged(int)點(diǎn)擊確定跳轉(zhuǎn)到選擇框的事件中來(lái),在事件中int state參數(shù)則代表選擇框傳回的狀態(tài)碼,通過(guò)判斷狀態(tài)碼Qt::Checked則代表選中、Qt::PartiallyChecked代表半選中、Qt::Unchecked代表未選中。
// 設(shè)置第一個(gè)選擇框 void MainWindow::on_checkBox_a_stateChanged(int state) { // 選中狀態(tài) if (state == Qt::Checked) { ui->checkBox_a->setText("選中"); } // 半選狀態(tài) else if(state == Qt::PartiallyChecked) { ui->checkBox_a->setText("半選中"); } // 未選中 else if(state == Qt::Unchecked) { ui->checkBox_a->setText("未選中"); } // 否則恢復(fù)默認(rèn)值 else { ui->checkBox_a->setText("半選框1"); } } // 設(shè)置第二個(gè)選擇框 void MainWindow::on_checkBox_b_stateChanged(int state) { // 選中狀態(tài) if (state == Qt::Checked) { ui->checkBox_b->setText("選中"); } // 半選狀態(tài) else if(state == Qt::PartiallyChecked) { ui->checkBox_b->setText("半選中"); } // 未選中 else if(state == Qt::Unchecked) { ui->checkBox_b->setText("未選中"); } // 否則恢復(fù)默認(rèn)值 else { ui->checkBox_b->setText("半選框2"); } } // 設(shè)置第三個(gè)選擇框 void MainWindow::on_checkBox_c_stateChanged(int state) { // 選中狀態(tài) if (state == Qt::Checked) { ui->checkBox_c->setText("選中"); } // 半選狀態(tài) else if(state == Qt::PartiallyChecked) { ui->checkBox_c->setText("半選中"); } // 未選中 else if(state == Qt::Unchecked) { ui->checkBox_c->setText("未選中"); } // 否則恢復(fù)默認(rèn)值 else { ui->checkBox_c->setText("半選框3"); } }
至此,當(dāng)選擇不同的選擇框時(shí)則可以切換到不同的選擇狀態(tài),如下圖;
接著來(lái)說(shuō)說(shuō)如何實(shí)現(xiàn)清除選擇框的狀態(tài),當(dāng)用戶點(diǎn)擊清除狀態(tài)時(shí),首先我們要做的就是調(diào)用isChecked()
來(lái)檢查每一個(gè)選擇框是否被選中,如果是則通過(guò)setChecked()
將屬性設(shè)置為false
即可,通過(guò)這種方式也可以實(shí)現(xiàn)對(duì)特定選擇框狀態(tài)的父子關(guān)聯(lián),代碼如下所示;
// 清除選中狀態(tài) void MainWindow::on_pushButton_clicked() { // 獲取選擇框狀態(tài) int checka = ui->checkBox_a->isChecked(); int checkb = ui->checkBox_b->isChecked(); int checkc = ui->checkBox_c->isChecked(); // 依次重置 if(checka == true) { ui->checkBox_a->setChecked(false); } if(checkb == true) { ui->checkBox_b->setChecked(false); } if(checkc == true) { ui->checkBox_c->setChecked(false); } } // 設(shè)置選中全部子框 void MainWindow::on_checkBox_d_stateChanged(int state) { // 選中所有子框 if(state == Qt::Checked) { ui->checkBox_e->setChecked(true); ui->checkBox_f->setChecked(true); ui->checkBox_g->setChecked(true); ui->checkBox_g->setChecked(true); ui->checkBox_h->setChecked(true); } // 取消子框全選狀態(tài) if(state == Qt::Unchecked) { ui->checkBox_e->setChecked(false); ui->checkBox_f->setChecked(false); ui->checkBox_g->setChecked(false); ui->checkBox_g->setChecked(false); ui->checkBox_h->setChecked(false); } }
當(dāng)讀者選擇選中全部子框按鈕時(shí),則底部的四個(gè)CheckBox
將會(huì)聯(lián)動(dòng),如下圖所示;
以上就是C++ Qt開發(fā)之CheckBox多選框組件的用法詳解的詳細(xì)內(nèi)容,更多關(guān)于C++ Qt CheckBox組件的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
C++之類和對(duì)象課后習(xí)題簡(jiǎn)單實(shí)例
下面小編就為大家?guī)?lái)一篇C++之類和對(duì)象課后習(xí)題簡(jiǎn)單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-07-07C++采用openfilename打開文件對(duì)話框用法實(shí)例
這篇文章主要介紹了C++采用openfilename打開文件對(duì)話框用法實(shí)例,是C++文件操作中非常實(shí)用的技巧,需要的朋友可以參考下2014-10-10C語(yǔ)言?超詳細(xì)總結(jié)講解二叉樹的概念與使用
二叉樹可以簡(jiǎn)單理解為對(duì)于一個(gè)節(jié)點(diǎn)來(lái)說(shuō),最多擁有一個(gè)上級(jí)節(jié)點(diǎn),同時(shí)最多具備左右兩個(gè)下級(jí)節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)。本文將詳細(xì)介紹一下C++中二叉樹的概念和結(jié)構(gòu),需要的可以參考一下2022-04-04Qt實(shí)現(xiàn)繪制多個(gè)設(shè)備的流量曲線圖詳解
這篇文章主要為大家詳細(xì)介紹了如何使用Qt開發(fā)繪制多個(gè)設(shè)備的流量曲線圖,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Qt有一定的幫助,需要的可以參考一下2023-01-01C語(yǔ)言中變參函數(shù)傳參的實(shí)現(xiàn)示例
本文主要介紹了C語(yǔ)言中變參函數(shù)傳參,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08C++實(shí)現(xiàn)紅黑樹核心插入實(shí)例代碼
紅黑樹是一種二叉搜索樹,但在每個(gè)結(jié)點(diǎn)上增加一個(gè)存儲(chǔ)位表示結(jié)點(diǎn)的顏色,可以是Red或Black,下面這篇文章主要給大家介紹了關(guān)于C++實(shí)現(xiàn)紅黑樹核心插入的相關(guān)資料,需要的朋友可以參考下2023-06-06VSCode配置C/C++語(yǔ)言環(huán)境(2023最新版)
這篇文章主要介紹了VSCode配置C/C++語(yǔ)言環(huán)境(2023最新版)的全過(guò)程,本文給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2023-11-11在clion上配置libtorch開發(fā)環(huán)境的圖文詳解
這篇文章主要介紹了在clion上配置libtorch開發(fā)環(huán)境的圖文詳解,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11關(guān)于C語(yǔ)言函數(shù)strstr()的分析以及實(shí)現(xiàn)
以下是對(duì)C語(yǔ)言中strstr()函數(shù)的使用進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以參考下2013-07-07