QT笔记----QCheckBox

news/2025/3/22 15:20:33/

文章目录

  • 概要
    • 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_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic: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.ppmy.cn/news/1581165.html

相关文章

从零开始学Seata:分布式事务的终极解决方案

一、什么是Seata&#xff1f;—— 分布式事务的“全自动管家” Seata 是一款开源的分布式事务框架&#xff0c;旨在解决微服务架构下的数据一致性问题。其核心目标是**“让开发者专注业务&#xff0c;自动管理事务”**&#xff0c;通过 AT模式&#xff08;Automatic Transacti…

威联通 后台可用命令查看Bash

一、查看所有可用命令的方法 列出所有外部命令&#xff08;二进制文件&#xff09; 外部命令通常存放在系统路径&#xff08;如 /bin, /usr/bin, /sbin, /usr/sbin&#xff09;中&#xff1a; bash ls /bin /usr/bin /sbin /usr/sbin # 直接列出命令目录&#xff08;结果较长&…

Jenkins 容器化部署 uniapp H5 项目

jenkins 容器化部署 uniapp H5 项目 背景 Linux 上使用 uniapp-cli不顺利windows server 服务器安装 Docker 环境不顺利 思路 在 Windows 机器上安装 HBuilder调用 uniapp-cli 打包 H5 文件将输出文件发送到 有 Docker 环境的服务器上打包 Docker 镜像推送镜像到镜像仓库 …

前端网络请求

为什么需要做网络请求&#xff1f; 例如哔哩哔哩官网上展现的资源其实都是通过请求获取的&#xff1a; 是从霹雳霹雳服务器上请求信息&#xff0c;然后传输到客户端本地&#xff08;浏览器&#xff09; 页面资源越多&#xff0c;传输的的次数越多&#xff0c;每一次的传输就被…

第P8周:YOLOv5-C3模块实现

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 &#x1f3e1; 我的环境&#xff1a; ● 语言环境&#xff1a;Python3.8 ● 编译器&#xff1a;Jupyter Lab ● 数据集&#xff1a;天气识别数据集 ● 深度学…

【C++基础】Lambda 函数 基础知识讲解学习及难点解析

一、引入 在 C 中&#xff0c;我们通常使用函数来完成特定的功能。但有时候&#xff0c;我们需要在一个函数内部定义一个小型的功能块&#xff0c;这时如果单独写一个函数会显得繁琐。C11 引入了 Lambda 函数&#xff0c;它是一种匿名函数&#xff0c;可以在需要的地方直接定义…

doris:负载均衡

用户通过 FE 的查询端口&#xff08;query_port&#xff0c;默认 9030&#xff09;使用 MySQL 协议连接 Doris。当部署多个 FE 节点时&#xff0c;用户可以在多个 FE 之上部署负载均衡层来实现 Doris 查询的高可用。 本文档介绍多种适用于 Doris 的负载均衡方案&#xff0c;并…

XSS 绕过分析:一次循环与两次循环的区别

目录 代码分析 代码流程&#xff1a; 一次循环的问题 原因分析&#xff1a;删除顺序导致遗漏 两次循环修复方案 两种绕过方式 绕过方法 1&#xff1a;DOM破环 绕过方法 2&#xff1a;SVG XSS&#xff08;双 SVG 绕过&#xff09; 1. 为什么 "一个SVG注定失败&…