C++ Qt开发:CheckBox多选框组件

这篇具有很好参考价值的文章主要介绍了C++ Qt开发:CheckBox多选框组件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍CheckBox单行输入框组件的常用方法及灵活运用。

QCheckBox 是 Qt 中用于实现复选框的组件,它提供了丰富的功能和灵活性。与之前文章中的RadioButton组件不同,CheckBox组件支持多项选择以及三态支持,即可以是选中、未选中或半选中的状态。

下面是QCheckBox的主要方法的概述和表格形式:

方法名 描述
QCheckBox(QWidget *parent = nullptr) 构造函数,创建一个 QCheckBox 组件。
isChecked() const 返回复选框的当前状态,选中返回 true,否则返回 false。
setCheckState(Qt::CheckState state) 设置复选框的状态,可以是 Qt::Unchecked、Qt::PartiallyChecked 或 Qt::Checked。
checkState() const 返回复选框的当前状态,枚举类型 Qt::CheckState。
setTristate(bool) 启用或禁用三态复选框的功能。
isTristate() const 返回是否启用了三态复选框的功能。
setCheckable(bool checkable) 设置复选框是否可以被选中,true 表示可以选中,false 表示不能选中。
isChecked() const 返回复选框的当前状态,选中返回 true,否则返回 false。
setChecked(bool check) 设置复选框的状态,true 表示选中,false 表示未选中。
text() const 返回复选框的文本标签。
setText(const QString &text) 设置复选框的文本标签。
stateChanged(int) 复选框状态变化时发射的信号,参数是枚举类型 Qt::CheckState,可以是 Qt::Unchecked、Qt::PartiallyChecked 或 Qt::Checked。

这里分别演示一下选择框组件的使用方法,首先展示如何设置三态选择框,然后再展示一下如何通过一个选择框控制子选择框的状态,如下图是该程序的布局。

C++ Qt开发:CheckBox多选框组件

首先在主构造函数MainWindow中通过使用setTristate()将前三个半选框设置为三态状态,并使用setEnabled()将前三个选择框设置为可选择状态,代码如下所示;

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    // 启用三态状态并设置为可选择
    ui->checkBox_a->setTristate();
    ui->checkBox_b->setTristate();
    ui->checkBox_c->setTristate();

    // 设置为可选状态
    ui->checkBox_a->setEnabled(true);
    ui->checkBox_b->setEnabled(true);
    ui->checkBox_c->setEnabled(true);
}

MainWindow::~MainWindow()
{
    delete ui;
}

接着我们分别为三个选择框配置选择事件,通过在半选框中右键选中stateChanged(int)点击确定跳转到选择框的事件中来,在事件中int state参数则代表选择框传回的状态码,通过判断状态码Qt::Checked则代表选中、Qt::PartiallyChecked代表半选中、Qt::Unchecked代表未选中。

// 设置第一个选择框
void MainWindow::on_checkBox_a_stateChanged(int state)
{
    // 选中状态
    if (state == Qt::Checked)
    {
       ui->checkBox_a->setText("选中");
    }
    // 半选状态
    else if(state == Qt::PartiallyChecked)
    {
       ui->checkBox_a->setText("半选中");
    }
    // 未选中
    else if(state == Qt::Unchecked)
    {
       ui->checkBox_a->setText("未选中");
    }
    // 否则恢复默认值
    else
    {
        ui->checkBox_a->setText("半选框1");
    }
}

// 设置第二个选择框
void MainWindow::on_checkBox_b_stateChanged(int state)
{
    // 选中状态
    if (state == Qt::Checked)
    {
       ui->checkBox_b->setText("选中");
    }
    // 半选状态
    else if(state == Qt::PartiallyChecked)
    {
       ui->checkBox_b->setText("半选中");
    }
    // 未选中
    else if(state == Qt::Unchecked)
    {
       ui->checkBox_b->setText("未选中");
    }
    // 否则恢复默认值
    else
    {
        ui->checkBox_b->setText("半选框2");
    }
}

// 设置第三个选择框
void MainWindow::on_checkBox_c_stateChanged(int state)
{
    // 选中状态
    if (state == Qt::Checked)
    {
       ui->checkBox_c->setText("选中");
    }
    // 半选状态
    else if(state == Qt::PartiallyChecked)
    {
       ui->checkBox_c->setText("半选中");
    }
    // 未选中
    else if(state == Qt::Unchecked)
    {
       ui->checkBox_c->setText("未选中");
    }
    // 否则恢复默认值
    else
    {
        ui->checkBox_c->setText("半选框3");
    }
}

至此,当选择不同的选择框时则可以切换到不同的选择状态,如下图;

C++ Qt开发:CheckBox多选框组件

接着来说说如何实现清除选择框的状态,当用户点击清除状态时,首先我们要做的就是调用isChecked()来检查每一个选择框是否被选中,如果是则通过setChecked()将属性设置为false即可,通过这种方式也可以实现对特定选择框状态的父子关联,代码如下所示;

// 清除选中状态
void MainWindow::on_pushButton_clicked()
{
    // 获取选择框状态
    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);
    }
}

// 设置选中全部子框
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);
    }
    // 取消子框全选状态
    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);
    }
}

当读者选择选中全部子框按钮时,则底部的四个CheckBox将会联动,如下图所示;

C++ Qt开发:CheckBox多选框组件文章来源地址https://www.toymoban.com/news/detail-753806.html

到了这里,关于C++ Qt开发:CheckBox多选框组件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 关于ElementUI的CheckBox多选框数据回显

    我们经常需要进行多选框checkbox的数据回显  例如上图,需要回显已选的数据。 因为ElementUi已经对代码进行了封装,如下代码示例:  在 el-checkbox-group 的 v-model 数据需要和label标签值相同才能数据回显。 因为ElementUI已经封装好了,会自动匹配 el-checkbox-group 中 v-model 的数据和

    2024年02月11日
    浏览(50)
  • 微信小程序checkbox,checkbox-group多选框的简易用法,代码简洁,可复用性高

    首先这是官网的用法: 代码非常的长,而且很难复用 (不能多个复选框共用这个checkboxChange方法) 划分线,下面是更好的写法 触发checkboxChange的时候传一个key值过去,之后值对应的是一个新数组(与下面wx:for的数组不同),用来存放已选择的项 因为 微信小程序中我们不能直

    2024年02月11日
    浏览(47)
  • Selenium教程06:单选框+多选框+下拉框组件的示例练习

    1.Radio单选框的示例用法,通过网页元素class和type属性多条件共同定位元素,模拟依次选中Android,Apple,Windows。 网页元素结构 实现代码:单选比较好操作,先定位需要单选的某个元素,然后点击一下即可。 写法2:也可以根据网页元素中的span标签定位,Android 2.Checkbox多选框的

    2024年02月02日
    浏览(57)
  • 基于elementUI封装的带复选框el-checkbox的下拉多选el-select组件

    组件:MultipleSelect.vue 使用:index.vue 多选框多选不换行

    2024年01月22日
    浏览(51)
  • vue页面中一个小列表中多选框的选中状态的两种设置方法

    第一种方法: 所有类型都是固定的、后台提供了选中状态的接口(页面进入时默认展示所有类型和类型的选中状态  思路:         1、列出所有类型同时与后台规定好每种类型的id与对应的名称         2、在mounted中执行获取后台给定的选中状态(包含1个或多个的id数组)

    2024年02月13日
    浏览(44)
  • C++ Qt开发:TableWidget表格组件

    Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍 TableWidget 表格组件的常用方法及灵活运用。 QTableWidget 是 Qt 中用于显示表格数

    2024年02月04日
    浏览(52)
  • C++ Qt开发:PushButton按钮组件

    Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍 QPushButton 按钮组件的常用方法及灵活运用。 QPushButton 是 Qt 框架中用于创建按钮

    2024年02月05日
    浏览(42)
  • C++ Qt开发:MdiArea多窗体组件

    Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍 MdiArea 组件的常用方法及灵活运用。 QMdiArea(Multiple Document Interface Area)是Qt中

    2024年02月04日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包