当前位置: 首页 > news >正文

Qt QCheckBox复选按钮控件

文章目录

  • 1 属性和方法
    • 1.1 文本
    • 1.2 三态
    • 1.3 自动排他
    • 1.4 信号和槽
  • 2 实例
    • 2.1 布局
    • 2.2 代码实现

  • Qt中的复选按钮类是QCheckBox
  • 它和单选按钮很相似,单选按钮常用在“多选一”的场景,而复选按钮常用在"多选多"的场景
  • 比如喜欢的水果选项中,可以在“苹果/桃/梨/橘子/香蕉”中选择多个。

1 属性和方法

QRadioButton有很多属性,完整的可查看帮助文档。这里列出常用的属性和方法。

1.1 文本

这两个是其父类QAbstractButton中的属性和方法,因此QPushButtonQRadioButtonQCheckBox都具有该属性

// 获取和设置显示的文本
QString text() const;
void setText(const QString &text);

1.2 三态

单选按钮,有选中(Checked)和非选中(UnChecked)这两种状态。

而复选按钮可以有三种状态:

  • Qt::Checked 选中
  • Qt::Unchecked 非选中
  • Qt::PartiallyChecked 半选中,比如当一组复选按钮中只选择了部分时,可以设置其父项为半选状态,如下

在这里插入图片描述

可以设置复选按钮,是否支持三态,如下:

// 用于获取和设置是否支持三态
bool inTristate() const;
void setTristate(bool y = true); 

如果不支持三态,使用方法单选按钮一样,只有选中(Checked)和非选中(unchecked)两种状态,没有半选中状态(PartiallyChecked)

此时可以使用如下获取复选按钮是否选中:

// 获取和设置复选按钮是否选中: checked / unchecked
bool isChecked() const;
void setChecked(bool);

如果支持三态,除了选中(Checked)和非选中(unchecked)两种状态,还有半选中状态(PartiallyChecked)此时可以使用如下获取复选按钮的状态:

// 设置和获取复选按钮的状态
Qt::CheckState checkState() const;
void setCheckState(Qt::CheckState state);

1.3 自动排他

复选按钮同样可以设置是否自动排他,入下:

// 获取和设置自动排他
bool autoExclusive() const;
void setAutoExclusive(bool)

我们前面说过,复选按钮实现的是“多选多",因此复选按钮的该属性默认是禁能的

在这里插入图片描述

尽管在技术上可以通过复选框来实现单选框的行为,也可以通过单选框来实现复选框的行为,但还是强烈建议使用众所周知的约定。

1.4 信号和槽

按钮在按下和抬起的过程中,会发射多个信号。

// 单选按钮 QRadioButton 被点击,会发出该信号
void clicked();// 当复选按钮的选中状态发生改变时,会发射该信号
// 所谓状态改变,是指在 Checked / UnChecked / PartiallyChecked 之间状态改变
void stateChanged(int state);

2 实例

该案例演示,单选按钮的属性以及信号槽

在这里插入图片描述

2.1 布局

在Ul设计师界面,拖拽对应的控件,修改显示的文字、控件的name,然后完成布局

在这里插入图片描述

2.2 代码实现

// 在Widget.cpp 文件中#include "widget.h"#include "ui_widget.h"Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);// stateChanged按钮状态发生改变,就发射信号connect(ui->cbApple, &QCheckBox::stateChanged, this,&Widget::onStateChanged);connect(ui->cbBanana, &QCheckBox::stateChanged, this,&Widget::onStateChanged);connect(ui->cbOrange, &QCheckBox::stateChanged, this,&Widget::onStateChanged);connect(ui->cbPeach, &QCheckBox::stateChanged, this,&Widget::onStateChanged);connect(ui->cbPear, &QCheckBox::stateChanged, this,&Widget::onStateChanged);
}Widget::~Widget() {delete ui;
}void Widget::onStateChanged() {QString s;// 获取是否选择状态 选中返回true 未选择返回falsebool appleChecked = ui->cbApple->isChecked();bool bananaChecked = ui->cbBanana->isChecked();bool orangeChecked = ui->cbOrange->isChecked();bool peachChecked = ui->cbPeach->isChecked();bool pearChecked = ui->cbPear->isChecked();// 实现cbAll功能if (appleChecked && bananaChecked && orangeChecked && peachChecked &&pearChecked) {// 全部选中ui->cbAll->setCheckState(Qt::Checked);} else if (!(appleChecked || bananaChecked || orangeChecked ||peachChecked || pearChecked)) {// 全部未选中ui->cbAll->setCheckState(Qt::Unchecked);} else {// 部分选中ui->cbAll->setCheckState(Qt::PartiallyChecked);}// 实现文本框输出功能//选中状态就输出文字if (appleChecked) {s += ui->cbApple->text() += " ";}if (bananaChecked) {s += ui->cbBanana->text() += " ";}if (orangeChecked) {s += ui->cbOrange->text() += " ";}if (peachChecked) {s += ui->cbPeach->text() += " ";}if (pearChecked) {s += ui->cbPear->text() += " ";}ui->leResult->setText(s);
}void Widget::on_cbAll_clicked() {// 手动点击时,不能出现半选状态// 设置不能是半选状态ui->cbAll->setTristate(false);// 获取cbAll状态int state = ui->cbAll->checkState();if (state == Qt::Checked) {// 全部选中ui->cbApple->setChecked(true);ui->cbBanana->setChecked(true);ui->cbOrange->setChecked(true);ui->cbPeach->setChecked(true);ui->cbPear->setChecked(true);} else if (state == Qt::Unchecked) {// 全部未选中ui->cbApple->setChecked(false);ui->cbBanana->setChecked(false);ui->cbOrange->setChecked(false);ui->cbPeach->setChecked(false);ui->cbPear->setChecked(false);}
}

相关文章:

Qt QCheckBox复选按钮控件

文章目录 1 属性和方法1.1 文本1.2 三态1.3 自动排他1.4 信号和槽 2 实例2.1 布局2.2 代码实现 Qt中的复选按钮类是QCheckBox它和单选按钮很相似,单选按钮常用在“多选一”的场景,而复选按钮常用在"多选多"的场景比如喜欢的水果选项中&#xf…...

加速科技ST2500 数模混合信号测试设备累计装机量突破500台!

国产数字机,测试中国芯!新年伊始,国产半导体测试设备领军企业加速科技迎来了振奋人心的一刻,ST2500 数模混合信号测试设备累计装机量突破500台!加速科技凭借其持续的创新能力、完善的解决方案能力、专业热忱的本地化服…...

ASP.NETCore WebAPI 入门 杨中科

ASP.NETCore WebAPI入门1 回顾 mvc开发模式 前端代码和后端代码是混在一个项目之中 WEB API 1、什么是结构化的Http接口。Json。 2、Web API项目的搭建。 3、Web API项目没有Views文件夹。 4、运行项目,解读代码结构。 5、【启用OpenAPI支持】→>swagger,在界…...

问题 C: 活动选择

题目描述 学校在最近几天有n个活动,这些活动都需要使用学校的大礼堂,在同一时间,礼堂只能被一个活动使。由于有些活动时间上有冲突,学校办公室人员只好让一些活动放弃使用礼堂而使用其他教室。    现在给出n个活动使用礼堂的起…...

SpringBoot学习(五)-Spring Security配置与应用

注:此为笔者学习狂神说SpringBoot的笔记,其中包含个人的笔记和理解,仅做学习笔记之用,更多详细资讯请出门左拐B站:狂神说!!! Spring Security Spring Security是一个基于Java的开源框架,用于在Java应用程…...

Java解决删除子串后的字符串最小长度

Java解决删除子串后的字符串最小长度 01 题目 给你一个仅由 大写 英文字符组成的字符串 s 。 你可以对此字符串执行一些操作,在每一步操作中,你可以从 s 中删除 任一个 "AB" 或 "CD" 子字符串。 通过执行操作,删除所…...

日志系统一(elasticsearch+filebeat+logstash+kibana)

目录 一、es集群部署 安装java环境 部署es集群 安装IK分词器插件 二、filebeat安装(docker方式) 三、logstash部署 四、kibana部署 背景:因业务需求需要将nginx、java、ingress日志进行收集。 架构:filebeatlogstasheskib…...

游戏版 ChatGPT,要用 AI 角色完善生成工具实现 NPC 自由

微软与 AI 初创公司 Inworld 合作,推出基于 AI 的角色引擎和 Copilot 助理,旨在提升游戏中 NPC 的交互力和生命力,提升游戏体验。Inworld 致力于打造拥有灵魂的 NPC,通过生成式 AI 驱动 NPC 行为,使其动态响应玩家操作…...

加工零件的题解

目录 原题描述: 题目描述 输入格式 输出格式 样例 #1 样例输入 #1 样例输出 #1 样例 #2 样例输入 #2 样例输出 #2 提示 题目大意: 主要思路: 但是我们怎么才能判断出x走到1时L是偶数还是奇数呢? 初始化:…...

走进shell

Linux系统启动时,会自动创建多个虚拟控制台。虚拟控制台是运行在Linux系统内存中的终端会话。 打开Linux控制台Terminal使用tty命令查看当前使用的虚拟控制台。 注:tty 表示电传打字机(teletypewriter) $ tty /dev/pts/0表示当前使用的是/dev/pts/0 虚拟…...

【Python】使用tkinter设计开发Windows桌面程序记事本(2)

上一篇:【Python】使用tkinter设计开发Windows桌面程序记事本(1)-CSDN博客 下一篇: 作者发炎 此代码模块是继承上一篇文章的代码模块的基础上开始设计开发的。 如果不知道怎么新建"记事本项目"文件夹,请参…...

Flutter DateTime 常用处理

今天介绍一下 DateTime 的一些常用功能,对其进行一个整理。 最近在开发过程中好多时候都会使用到时间方面的方法,心想还是统一处理一下,封装一个管理类,这个类可以满足我们开发过程中常用的时间方法。 今天正好整理了一下&#…...

【uniapp】APP打包上架应用商-注意事项

初雪云-uniapp启动图自定义生成(支持一键生成storyboard) HBuilderX需要的自定义storyboard文件格式为 " zip压缩包 " 一、“Android” — 设置targetSdkVersion 小米、OPPO、vivo、华为等主流应用商店,将于2023年12月采用 targetS…...

【算法题】43. 字符串相乘

题目 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。 注意:不能使用任何内置的 BigInteger 库或直接将输入转换为整数。 示例 1: 输入: num1 "2", num2 "3…...

CH341 SPI方式烧录BK7231U

CH341是一个USB总线的转接芯片,通过USB总线提供异步串口、打印口、并口以及常用的2线和4线等同步串行接口。 BK7231U Wi-Fi SOC芯片,内嵌处理器。1. 符合802.11b/g/n 1x1协议 2. 17dBm 输出功率3. 支持20/40 MHz带宽和STBC 4. 支持Wi-Fi STA、AP、…...

sd-webui-EasyPhoto win 安装笔记

目录 安装教程: 插件介绍 ControlNet 1.1 Tile: launch.py问题 依赖库 webui安装问题...

gradient_checkpointing

点评:本质是减少内存消耗的一种方式,以时间或者计算换内存 gradient_checkpointing(梯度检查点)是一种用于减少深度学习模型中内存消耗的技术。在训练深度神经网络时,反向传播算法需要在前向传播和反向传播之间存储中间计算结果,以便计算梯度并更新模型参数。这些中间结…...

回溯算法part05 算法

回溯算法part05 算法 今日任务 491.递增子序列46.全排列47.全排列 II 1.LeetCode 491.递增子序列 https://leetcode.cn/problems/non-decreasing-subsequences/description/ class Solution {List<List<Integer>> resultnew ArrayList<>();List<Inte…...

阿里云系统盘测评ESSD、SSD和高效云盘IOPS、吞吐量性能参数表

阿里云服务器系统盘或数据盘支持多种云盘类型&#xff0c;如高效云盘、ESSD Entry云盘、SSD云盘、ESSD云盘、ESSD PL-X云盘及ESSD AutoPL云盘等&#xff0c;阿里云百科aliyunbaike.com详细介绍不同云盘说明及单盘容量、最大/最小IOPS、最大/最小吞吐量、单路随机写平均时延等性…...

RK3568平台开发系列讲解(Linux系统篇)Linux 内核打印

🚀返回总目录 文章目录 一、方法一:dmseg 命令二、方法二:查看 kmsg 文件三、方法三:调整内核打印等级一、方法一:dmseg 命令 在终端使用 dmseg 命令可以获取内核打印信息,该命令的具体使用方法如下所示: 首先在串口终端使用 “dmseg”命令,可以看见相应的内核打印信息…...

药物发现必备:RDKit分子指纹在虚拟筛选中的7种高级用法

药物发现必备&#xff1a;RDKit分子指纹在虚拟筛选中的7种高级用法 在当今药物研发领域&#xff0c;虚拟筛选已成为加速药物发现流程的关键技术。面对海量化合物库&#xff0c;如何高效准确地识别潜在活性分子&#xff1f;RDKit分子指纹技术提供了强有力的解决方案。不同于基础…...

Qwen-Image-Edit-2509镜像部署实战:跟着图文教程,10分钟跑通AI修图

Qwen-Image-Edit-2509镜像部署实战&#xff1a;跟着图文教程&#xff0c;10分钟跑通AI修图 1. 快速了解Qwen-Image-Edit-2509 Qwen-Image-Edit-2509是阿里巴巴通义千问团队推出的最新AI图像编辑工具。这个模型最大的特点是能够理解自然语言指令&#xff0c;对图片进行智能修改…...

解密革命性构建工具:PoeCharm如何突破传统限制实现高效角色规划

解密革命性构建工具&#xff1a;PoeCharm如何突破传统限制实现高效角色规划 【免费下载链接】PoeCharm Path of Building Chinese version 项目地址: https://gitcode.com/gh_mirrors/po/PoeCharm 在流放之路的复杂游戏生态中&#xff0c;角色构建往往成为玩家面临的最大…...

MeetingBar AppleScript自动化:会议开始前自动暂停音乐的终极指南

MeetingBar AppleScript自动化&#xff1a;会议开始前自动暂停音乐的终极指南 【免费下载链接】MeetingBar &#x1f1fa;&#x1f1e6; Your meetings at your fingertips in the macOS menu bar 项目地址: https://gitcode.com/gh_mirrors/me/MeetingBar MeetingBar是…...

汽车线控转向系统动力学法Carsim和Simulink联合仿真

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f447; 关注我领取海量matlab电子书和…...

Qwen3-Embedding国产化部署

从单一型人才到AI带领下的复合型人才 1.1 传统职能的终结 传统软件公司怎么干的&#xff1f; 销售、售前、交付、研发、市场、运维——各司其职&#xff0c;职能清晰。看起来很专业&#xff0c;但实际上是什么&#xff1f;一堆冗余的角色在等活干。 这不是高效&#xff0c;这是…...

遥感智能体模块全景解析:从任务拆解到工作流编排

1. 遥感智能体的核心架构设计 第一次接触遥感智能体&#xff08;RS-Agent&#xff09;这个概念时&#xff0c;很多人会感到困惑&#xff1a;它和传统遥感处理软件有什么区别&#xff1f;简单来说&#xff0c;RS-Agent更像是一个"会思考的助手"。我参与过几个遥感智能…...

别啃书了!用这款70块的Steam游戏《Turing Complete》,手把手带你从逻辑门拼出CPU

从逻辑门到CPU&#xff1a;用《Turing Complete》重构计算机组成原理学习体验 当我在大学第一次翻开《计算机组成原理》教材时&#xff0c;那些密密麻麻的逻辑门符号和抽象的数据通路图让我头皮发麻。直到在Steam上发现标价70元的《Turing Complete》——这款看似简单的电路模拟…...

28:L构建AI Agent安全:蓝队的智能代理防御

作者&#xff1a; HOS(安全风信子) 日期&#xff1a; 2026-03-19 主要来源平台&#xff1a; GitHub 摘要&#xff1a; AI Agent的发展为安全防御带来了新的可能性&#xff0c;但也带来了新的安全挑战。基拉等对手可能利用AI Agent进行攻击。L深入研究AI Agent安全技术&#xff…...

linux内核故障分析及调测工具使用能力

Linux内核的故障分析和调测工具非常丰富&#xff0c;根据使用场景大致可以分为静态分析/代码检查、动态跟踪、性能分析、内存调试、以及崩溃转储分析这几大类。 下面我为你整理了典型工具的归类表&#xff0c;方便快速查阅&#xff0c;后面再详细解读几个核心工具的实战能力。 …...