Qt/C++学习系列之QGroupBox控件的简单使用

news2025/6/7 15:44:30

Qt/C++学习系列之QGroupBox控件的简单使用

  • 前言
  • 样式使用
  • 代码层面
    • 初始化控件
    • 事件过滤器
    • 点击事件处理
  • 总结


前言

最近在练手一个项目,项目中有不同功能的划分,为了功能分区一目了然,我使用到QGroupBox控件,也是在界面排版布局中最常用的控件之一。下面就详细介绍一下项目中的具体使用。


样式使用

在这里插入图片描述

在项目初始化的时候,就简单粗暴的使用setStyleSheet对ui界面进行统一的设定。
那么QGroupBox控件可以定义什么的样式呢?

  • 边框样式
    border、border-width、border-style、border-color、border-radius
  • 字体样式
    font-size、font-family、font-weight、color
  • 背景样式
    background-color、background-image、background-repeat、background-position
  • 内边距和外边距
    padding、margin
  • 标题样式
    QGroupBox 的标题可以通过子控件选择器 QGroupBox::title 来单独设置样式。
  • 指示器样式
    QGroupBox 可以添加复选框,也可以用QGroupBox::indicator类设置样式。
    复选框可以这样加
    在这里插入图片描述

代码层面

项目中,我们将一些内容进行分类后,需要根据勾选的QGroupBox做出对应的操作。有时候需要QGroupBox的点击事件。

初始化控件

void MainWindow::QGroupBox_init()
{
    ui->groupBox_1->installEventFilter(this); // 为 groupBox_1 安装事件过滤器
    ui->groupBox_2->installEventFilter(this); // 为 groupBox_2 安装事件过滤器
    GroupBox.append(ui->groupBox_1); // 将 groupBox_1 添加到控件列表
    GroupBox.append(ui->groupBox_2); // 将 groupBox_2 添加到控件列表

    // 默认勾选 QGroupBox1
    if (!GroupBox.isEmpty()) {
        GroupBox.first()->setStyleSheet("XXX");
    }
}
  • installEventFilter:为控件安装事件过滤器,以便捕获鼠标点击事件。
  • GroupBox:一个列表,可以动态改变样式的 QGroupBox 控件。将列表第一个设置默认的样式。
    在这里插入图片描述
    初始化时也可以使用setStyleSheet对控件进行样式定义。举个例子:
this->setStyleSheet(
        "QGroupBox { "
        "border: 2px solid #ccc;font-size: 14px; font-weight: normal; color: black; padding: 20px; border-radius: 20px;"
        "}"
    );
  • 边框为 2 像素宽的浅灰色实线。字体大小为 14 像素,字体颜色为黑色,字体粗细为正常。控件内部的填充间距为 20 像素。边框的四个角为半径 20 像素的圆角。

事件过滤器

在初始化中就使用到事件过滤器,是因为当界面中的QGroupBox过多,而我们只需要对其中某些QGroupBox进行处理时,可以使用事件过滤事件进行处理。

bool MainWindow::eventFilter(QObject *obj, QEvent *event)
{
    if (event->type() == QEvent::MouseButtonPress) { // 检测鼠标点击事件
        QGroupBox *clickedGroupBox = qobject_cast<QGroupBox *>(obj); // 将点击的对象转换为 QGroupBox 类型
        if (设置条件) { // 判断是否为列表中的 QGroupBox
            onGroupBoxClicked(clickedGroupBox); // 调用点击事件处理函数
            return true; // 事件已处理
        }
    }
    return QMainWindow::eventFilter(obj, event); // 调用基类的事件过滤器
}
  • event->type():判断事件类型是否为鼠标点击事件。
  • qobject_cast<QGroupBox *>(obj):将点击的对象转换为 QGroupBox 类型。
  • onGroupBoxClicked:调用点击事件处理函数。

点击事件处理

void MainWindow::onGroupBoxClicked(QGroupBox *clickedGroupBox)
{
    // 获取被点击的 QGroupBox 的名称
    QString groupName = clickedGroupBox->title();
    //接着对点击的QGroupBox进行处理
}
  • 获取标题:通过 clickedGroupBox->title() 获取被点击的 QGroupBox 的标题。

总结

本文根据实际项目出发,介绍了QGroupBox 的相关事件处理方式。

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

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

相关文章

如何轻松地将数据从 iPhone传输到iPhone 16

对升级到 iPhone 16 感到兴奋吗&#xff1f;恭喜&#xff01;然而&#xff0c;除了兴奋之外&#xff0c;学习如何将数据从 iPhone 传输到 iPhone 16 也很重要。毕竟&#xff0c;那些重要的联系人、笔记等都是不可或缺的。为了实现轻松的iPhone 到 iPhone 传输&#xff0c;我们总…

开源供应链攻击持续发酵,多个软件包仓库惊现恶意组件

近期在npm、Python和Ruby软件包仓库中相继发现多组恶意组件&#xff0c;这些组件能够清空加密货币钱包资金、安装后删除整个代码库并窃取Telegram API令牌&#xff0c;再次印证了开源生态系统中潜伏的多样化供应链威胁。 多平台恶意组件集中曝光 Checkmarx、ReversingLabs、S…

量子计算+AI:特征选择与神经网络优化创新应用

在由玻色量子协办的第二届APMCM“五岳杯”量子计算挑战赛中&#xff0c;来自北京理工大学的Q-Masterminds团队摘取了银奖。该团队由北京理工大学张玉利教授指导&#xff0c;依托玻色量子550计算量子比特的相干光量子计算机&#xff0c;将量子计算技术集成到特征选择和神经网络剪…

光伏功率预测新突破:TCN-ECANet-GRU混合模型详解与复现

研究背景 ​背景与挑战​ 光伏发电受天气非线性影响,传统方法(统计模型、机器学习)难以处理高维时序数据,预测误差大。​创新模型提出​ 融合时序卷积网络(TCN)、高效通道注意力(ECANet)和门控循环单元(GRU)的混合架构。​方法论细节​ TCN:膨胀因果卷积提取长时序特…

C# 用户控件(User Control)详解:创建、使用与最佳实践

在C#应用程序开发中&#xff0c;用户控件&#xff08;User Control&#xff09;是一种强大的工具&#xff0c;它允许开发者将多个标准控件组合成一个可复用的自定义组件。无论是Windows Forms还是WPF&#xff0c;用户控件都能显著提高UI开发的效率&#xff0c;减少重复代码&…

OpenWrt 搭建 samba 服务器的方法并解决 Windows 不允许访问匿名服务器(0x80004005的错误)的方法

文章目录 一、安装所需要的软件二、配置自动挂载三、配置 Samba 服务器四、配置 Samba 访问用户和密码&#xff08;可选&#xff09;新建 Samba 专门的用户添加无密码的 Samba 账户使用root账户 五、解决 Windows 无法匿名访问Samba方案一 配置无密码的Samba账户并启用匿名访问…

【 Redis | 完结篇 缓存优化 】

前言&#xff1a;本节包含常见redis缓存问题&#xff0c;包含缓存一致性问题&#xff0c;缓存雪崩&#xff0c;缓存穿透&#xff0c;缓存击穿问题及其解决方案 1. 缓存一致性 我们先看下目前企业用的最多的缓存模型。缓存的通用模型有三种&#xff1a; 缓存模型解释Cache Asi…

AI数据集构建:从爬虫到标注的全流程指南

AI数据集构建&#xff1a;从爬虫到标注的全流程指南 系统化学习人工智能网站&#xff08;收藏&#xff09;&#xff1a;https://www.captainbed.cn/flu 文章目录 AI数据集构建&#xff1a;从爬虫到标注的全流程指南摘要引言流程图&#xff1a;数据集构建全生命周期一、数据采…

AI破局:饿了么如何搅动即时零售江湖

最近&#xff0c;即时零售赛道打的火热&#xff0c;对我们的生活也产生了不少的影响。 美女同事小张就没少吐槽“他们咋样了我不知道&#xff0c;奶茶那么便宜&#xff0c;胖了五六斤不说&#xff0c;钱包也空了&#xff0c;在淘宝买奶茶的时候&#xff0c;换了个手机还买了不少…

04 APP 自动化- Appium toast 元素定位列表滑动

文章目录 一、toast 元素的定位二、滑屏操作 一、toast 元素的定位 toast 元素就是简易的消息提示框&#xff0c;toast 显示窗口显示的时间有限&#xff0c;一般3秒左右 # -*- codingutf-8 -*- from time import sleep from appium import webdriver from appium.options.an…

物流项目第十期(轨迹微服务)

本项目专栏&#xff1a; 物流项目_Auc23的博客-CSDN博客 建议先看这期&#xff1a; MongoDB入门之Java的使用-CSDN博客 物流项目第九期&#xff08;MongoDB的应用之作业范围&#xff09;-CSDN博客 业务需求 快递员取件成功后&#xff0c;需要将订单转成运单&#xff0c;用…

【数据库】关系数据理论--规范化

1.问题的提出 关系模式由五部分组成&#xff0c;是一个五元组&#xff1a; R(U, D, DOM, F) &#xff08;1&#xff09;关系名R是符号化的元组语义 &#xff08;2&#xff09;U为一组属性 &#xff08;3&#xff09;D为属性组U中的属性所来自的域 &#xff08;4&#xff09;DOM…

Oracle双平面适用场景讨论会议

4月28日&#xff0c;我在杭州组织召开了Oracle双平面会议讨论沙龙。在国产化数据库浪潮的今天&#xff0c;Oracle数据库作为国产数据库的应急库&#xff0c;在国产数据库发生故障或者性能下降时&#xff0c;如何更好的使用Oracle。会议主题如下&#xff1a; 1、背景与痛点速览&…

使用BERT/BiLSTM + CRF 模型进行NER进展记录~

使用代码处理数据集&#xff0c;发现了一些问题&#xff0c;以及解决办法~ 下载了一组数据集&#xff0c;数据存放在CSV中&#xff0c;GBK格式。如下&#xff1a; 首先对每一列直接进行NER抽取&#xff0c;结果非常不好&#xff1a; 几乎是乱抽取的&#xff0c;解决办法是自己创…

Web攻防-SQL注入高权限判定跨库查询文件读写DNS带外SecurePriv开关绕过

知识点&#xff1a; 1、Web攻防-SQL注入-高权限用户差异 2、Web攻防-SQL注入-跨库注入&文件读写&DNS带外 案例说明&#xff1a; 在应用中&#xff0c;数据库用户不同&#xff0c;可操作的数据库和文件读写权限不一&#xff0c;所有在注入过程中可以有更多的利用思路&a…

C语言数据结构笔记3:Union联合体+结构体取8位Bool量

本文衔接上文要求&#xff0c;新增8位bool量的获取方式。 目录 问题提出&#xff1a; Union联合体struct结构体(方式1)&#xff1a; Union联合体struct结构体(方式2)&#xff1a; BYTE方式读取&#xff1a; 问题提出&#xff1a; 在STM32单片机的编程中&#xff0c;无法定义Boo…

SAP学习笔记 - 开发22 - 前端Fiori开发 数据绑定(Jason),Data Types(数据类型)

上一章讲了Icons&#xff08;图标&#xff09;&#xff0c;Icon Explorer。 SAP学习笔记 - 开发21 - 前端Fiori开发 Icons&#xff08;图标&#xff09;&#xff0c;Icon Explorer&#xff08;图标浏览器&#xff09;-CSDN博客 本章继续讲SAP Fiori开发的知识。 目录 1&…

网络编程之TCP编程

基于 C/S &#xff1a;客户端&#xff08;client&#xff09;/服务器端&#xff08;server&#xff09; 1.流程 2. 函数接口 所有函数所需头文件&#xff1a; #include <sys/types.h> #include <sys/socket.h> 系统定义好了用来存储网络信息的结构体 ipv4通信使…

C++进阶--C++11(04)

文章目录 C进阶--C11&#xff08;04&#xff09;lambdalambda表达式语法捕捉列表lambda的应用lambda的原理 包装器functionbind 总结结语 很高兴和大家见面&#xff0c;给生活加点impetus&#xff01;&#xff01;开启今天的编程之路&#xff01;&#xff01; 今天我们进一步c…

当AI遇上防火墙:新一代智能安全解决方案全景解析

在2025年网络安全攻防升级的背景下&#xff0c;AI与防火墙的融合正重塑安全防御体系。以下三款产品通过机器学习、行为分析等技术创新&#xff0c;为企业提供智能化主动防护&#xff1a; 1. 保旺达数据安全管控平台——AI驱动的动态治理引擎‌ 智能分类分级‌&#xff1a;基于…