QT笔记----QCheckBox

news2025/3/30 1:17:54

文章目录

  • 概要
    • 1、QCheckBox 的基本概念
    • 2、单个QCheckBox
    • 3、多个QCheckBox同时应用
    • 3.1、实现效果
    • 3.2、实现Demo

概要

在 Qt 应用程序开发中,QCheckBox 是一个常用的用户界面元素,它允许用户在两种状态(选中和未选中)之间进行切换,也可以设置为三态(选中、未选中、部分选中)。本文将详细介绍 QCheckBox 的使用方法。

1、QCheckBox 的基本概念

QCheckBox 继承自 QAbstractButton 类,它具有按钮的基本特性,同时又有自己独特的状态表示。用户可以通过鼠标点击或者键盘操作来改变其状态。在很多场景下,比如设置选项、选择功能等,QCheckBox 都发挥着重要作用。

2、单个QCheckBox

(1)、单个QCheckBox,通过信号“checked(bool)”获取当前QCheckBox是否被选中,bool为true为选中,否则反之;

QCheckBox *checkBox=new QCheckBox();
connect(checkBox,SIGNAL(clicked(bool)),this,SLOT(hdl_cBold(bool)));

3、多个QCheckBox同时应用

3.1、实现效果

QCheckBoxDemo

3.2、实现Demo

(1)、项目目录结构
在这里插入图片描述(2)、Ui界面,借助QT工具,直接拖拽进画布,效果如下所示:
在这里插入图片描述(3)、根据效果的代码实现如下所示:

//main.cpp
#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}

//mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QCheckBox>
#include <QRadioButton>
#include <QPushButton>
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QPlainTextEdit>
#include <QButtonGroup>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

public:
    void init();  //参数初始化
    void cnnt();   //创建信号和槽函数的连接

public slots:
    void hdl_checkBox(int id,bool checked);//字体样式切换
    void hdl_radiButton();  //字体颜色切换
   
private:
    Ui::MainWindow *ui;
   QButtonGroup *m_fontColor; //创建QButtonGroup,将其封装
   QButtonGroup *m_fontStyle;
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "ui_mainwindow.h"

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

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

void MainWindow::init()
{
    m_groupBox=new QButtonGroup;
    m_groupBox->addButton(ui->rBlack,0);
    m_groupBox->addButton(ui->rRed,1);
    m_groupBox->addButton(ui->rBlue,2);
    m_groupBox->setExclusive(true);  //只能同时选择一个
    ui->rBlack->setChecked(true);

    ui->plainTextEdit->setPlainText(tr("\n Hello World\n\n It is my demo"));
    QFont font;
    font.setPointSize(15); //字体大小
    ui->plainTextEdit->setFont(font);
}

void MainWindow::cnnt()
{
connect(m_fontStyle,QOverload<int,bool>::of(&QButtonGroup::buttonToggled),this,&MainWindow::hdl_checkBox);
    connect(m_fontColor,QOverload<QAbstractButton *>::of(&QButtonGroup::buttonClicked),this,&MainWindow::hdl_radiButton);
}
//字体样式判断 qcheckbox
void MainWindow::hdl_checkBox(int id,bool checked)
{
    switch (id) {
    case 0:
    {
        QFont font=ui->plainTextEdit->font();
        font.setUnderline(checked);
        ui->plainTextEdit->setFont(font);
         break;
    }
    case 1:
   {
        QFont font=ui->plainTextEdit->font();
        font.setItalic(checked);
        ui->plainTextEdit->setFont(font);
        break;
   }
     case 2:
    {
        QFont font=ui->plainTextEdit->font();
        font.setBold(checked);
        ui->plainTextEdit->setFont(font);
         break;
    }

    default:
        break;
    }
}

//字体颜色选择 qradiobutton
void MainWindow::hdl_radiButton()
{
     QTextCharFormat fontColor;
    switch (m_groupBox->checkedId()) {
    case 0:
    {
        fontColor.setForeground(Qt::black);
        ui->plainTextEdit->setStyleSheet("color:black");
         break;
    }
    case 1:
   {
       fontColor.setForeground(Qt::red);
       ui->plainTextEdit->setStyleSheet("color:red");
        break;
   }
     case 2:
    {
        fontColor.setForeground(Qt::blue);
        ui->plainTextEdit->setStyleSheet("color:blue");
         break;
    }

    default:
        break;
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2321069.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GR00T N1——英伟达开源的通用人形VLA:类似Helix的快与慢双系统,且可类似ViLLA利用海量的无标注视频做训练

前言 就在昨天3.19日的凌晨&#xff0c;英伟达发布的GR00T N1还是很有含金量的(上午已有好几个朋友私我了)&#xff0c;由此可以看到很多相关工作的影子&#xff0c;比如helix π0 LAPA&#xff0c;具体而言&#xff0c;其具有双系统架构 VLM模块(系统2)通过视觉和语言指令解…

数据建模流程: 概念模型>>逻辑模型>>物理模型

数据建模流程 概念模型 概念模型是一种高层次的数据模型&#xff0c;用于描述系统中的关键业务概念及其之间的关系。它主要关注业务需求和数据需求&#xff0c;而不涉及具体的技术实现细节。概念模型通常用于在项目初期帮助业务人员和技术人员达成共识&#xff0c;确保对业务需…

光谱仪与光谱相机的核心区别与协同应用

一、核心功能与数据维度 ‌光谱仪‌ ‌功能定位‌&#xff1a;专注单点或线状区域的光谱分析&#xff0c;通过色散元件&#xff08;光栅/棱镜&#xff09;分离波长&#xff0c;生成一维或二维光谱曲线&#xff0c;用于量化光强、吸收率等参数‌。 ‌数据维度‌&#xff1a;输…

运行时智控:PanLang 开发者指南(一)运行时系统核心模块实现——PanLang 原型全栈设计方案与实验性探索5

运行时智控&#xff1a;PanLang 开发者指南&#xff08;一&#xff09;运行时系统核心模块实现——PanLang 原型全栈设计方案与实验性探索5 文章目录 运行时智控&#xff1a;PanLang 开发者指南&#xff08;一&#xff09;运行时系统核心模块实现——PanLang 原型全栈设计方案与…

操作系统导论——第13章 抽象:地址空间

一、早期系统 从内存来看&#xff0c;早期的机器并没有提供多少抽象给用户。基本上&#xff0c;机器的物理内存如图13.1所示 操作系统曾经是一组函数&#xff08;实际上是一个库&#xff09;&#xff0c;在内存中&#xff08;在本例中&#xff0c;从物理地址0开始&#xff09;&…

C# 调用 VITS,推理模型 将文字转wav音频net8.0 跨平台

一、系统环境 操作系统&#xff1a;win10&#xff0c;win11 运行环境&#xff1a;dotnet8 工具:命令行&#xff0c;powershell 开源库:sherpa-onnx 二、工具和源码下载 开源库:https://k2-fsa.github.io/sherpa/onnx/index.html 运行环境下载 https://dotnet.microsoft.c…

C#基于MVC模式实现TCP三次握手,附带简易日志管理模块

C#基于MVC模式实现TCP三次握手 1 Model1.1 ServerModel1.2 ClientModel1.3 配置参数模块1.4 日志管理模块1.4.1 数据结构1.4.1 日志管理工具类1.4.1 日志视图展示1.4.1.1 UcLogManage.cs1.4.1.2 UcLogManage.Designer.cs 2 视图&#xff08;View&#xff09;2.1 ViewServer2.1.…

分布式算法:Paxos Raft 两种共识算法

1. Paxos算法 Paxos算法是 Leslie Lamport&#xff08;莱斯利兰伯特&#xff09;在 1990 年提出的一种分布式系统共识算法。也是第一个被证明完备的共识算法&#xff08;前提是不存在恶意节点&#xff09;。 1.1 简介 Paxos算法是第一个被证明完备的分布式系统共识算法。共识…

什么是数据库监控

数据库监控是一个综合的过程&#xff0c;涉及观察、分析和优化组织内数据库的性能、运行状况和可用性。通过持续跟踪查询执行时间、CPU使用率、内存消耗和存储I/O等指标&#xff0c;数据库监控使管理员能够主动识别和解决潜在问题。这种对数据库操作的实时可见性对于确保应用程…

Java学习总结-泛型

什么是泛型&#xff1f; 定义 类、接口、方法时&#xff0c;同时声明了一个或多个类型变量&#xff08;如&#xff1a;<E>&#xff09;&#xff0c;称为泛型类、泛型接口、泛型方法、他们统称为泛型。public class ArrayList<E>{ }。 有什么作用呢&#xf…

基于深度学习的相位调制算法步骤

1.构建网络结构 2.制作数据集 3.训练网络 4.引入评价指标 5.迭代优化 总结 通过以上步骤&#xff0c;可以实现基于深度学习的相位调制算法&#xff1a; 使用 U-Net 构建神经网络。 生成数据集并训练网络。 使用训练好的网络预测相位分布。 通过相关系数 γ 评估调制效果&…

Go语言的基础类型

一基础数据类型 一、布尔型&#xff08;Bool&#xff09; 定义&#xff1a;表示逻辑真 / 假&#xff0c;仅有两个值&#xff1a;true 和 false内存占用&#xff1a;1 字节使用场景&#xff1a;条件判断、逻辑运算 二、数值型&#xff08;Numeric&#xff09; 1. 整数类型&…

动力保护板测试仪:电池安全的坚实守护者

在新能源技术日新月异的今天&#xff0c;电池作为各类电子设备的心脏&#xff0c;其安全性与可靠性成为了行业内外关注的焦点。而动力保护板&#xff0c;作为电池系统中的重要组成部分&#xff0c;承担着精准调控电池充放电、防止电池过充、过放、短路等危险情况的重任。然而&a…

Lineageos 22.1(Android 15)制定应用强制横屏

一、前言 有时候需要系统的某个应用强制衡平显示&#xff0c;不管他是如何配置的。我们只需要简单的拿到top的Task下面的ActivityRecord&#xff0c;并判断包名来强制实现。 二、调整wms com.android.server.wm.DisplayRotation /*** Given an orientation constant, return…

SpringBoot-3-JWT令牌

目录 引入 引入依赖 拦截器 创建工具类 创建拦截器的包及拦截器 注册拦截器 修改一下登录成功后token的代码 测试 引入 试想一下&#xff0c;以上我们的访问都是直接访问对应的接口。比如说用户登录的时候就访问登录的接口。 那么如果有人他不访问你的登录接口&#…

git使用经验(一)

git使用经验&#xff08;一&#xff09; 我之前已经下载了别人的代码&#xff0c;我想在此基础上进行修改&#xff0c;并移动到自己的私有仓库&#xff0c;方便上传到自己的私有仓库自己进行版本控制 git clone下来别人的代码&#xff0c;删除有关git的隐藏文件 进入到自己的…

文件上传的小点总结

1.文件上传漏洞 服务器端脚本语言对上传文件没有严格的验证和过滤&#xff0c;就可以给攻击者上传恶意脚本文件的可能。 文件上传检测绕过&#xff1a; 简单思路&#xff1a;&#xff08;这里以前端上传图片为例&#xff09; ①开启phpstudy&#xff0c;启动apache即可&…

基于WebRtc,GB28181,Rtsp/Rtmp,SIP,JT1078,H265/WEB融合视频会议接入方案

智能融合视频会议系统方案—多协议、多场景、全兼容的一站式视频协作平台 OvMeet,LiveMeet针对用户​核心痛点实现功能与用户价值 &#xff0c;Web平台实现MCU多协议&#xff0c;H265/H264等不同编码监控&#xff0c;直播&#xff0c;会议&#xff0c;调度资源统一融合在一套界…

基于漂浮式海上风电场系统的浮式风力发电机matlab仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于漂浮式海上风电场系统的浮式风力发电机matlab仿真&#xff0c;通过MATLAB数值仿真对浮式风力发电机的性能做模拟与仿真。 2.系统仿真结果 3.核心程序与模型 版本&#x…

深入探索ArkUI中的@LocalBuilder装饰器:构建高效可维护的UI组件

在ArkUI框架中&#xff0c;组件化开发是提升代码复用性和维护性的关键手段。随着项目复杂度的增加&#xff0c;开发者常常面临如何在保持组件封装性的同时&#xff0c;灵活处理组件内部逻辑的问题。传统的Builder装饰器虽然提供了强大的自定义构建能力&#xff0c;但在某些场景…