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

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

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 添加到控件列表// 默认勾选 QGroupBox1if (!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 (设置条件) { // 判断是否为列表中的 QGroupBoxonGroupBoxClicked(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.lryc.cn/news/2401301.html

相关文章:

  • Ubuntu设置之初始化
  • 如何轻松地将数据从 iPhone传输到iPhone 16
  • 开源供应链攻击持续发酵,多个软件包仓库惊现恶意组件
  • Docker Compose 备忘
  • 量子计算+AI:特征选择与神经网络优化创新应用
  • 算法分析与设计-动态规划、贪心算法
  • 光伏功率预测新突破:TCN-ECANet-GRU混合模型详解与复现
  • React组件基础
  • 2025年5月24日系统架构设计师考试题目回顾
  • ABP 框架集成 EasyAbp.Abp.GraphQL 构建高性能 GraphQL API
  • C# 用户控件(User Control)详解:创建、使用与最佳实践
  • OpenWrt 搭建 samba 服务器的方法并解决 Windows 不允许访问匿名服务器(0x80004005的错误)的方法
  • 【 Redis | 完结篇 缓存优化 】
  • AI数据集构建:从爬虫到标注的全流程指南
  • Android 颜色百分比对照
  • AI破局:饿了么如何搅动即时零售江湖
  • 04 APP 自动化- Appium toast 元素定位列表滑动
  • 判断它是否引用了外部库
  • 物流项目第十期(轨迹微服务)
  • Python 入门到进阶全指南:从语言特性到实战项目
  • 【数据库】关系数据理论--规范化
  • SQL 中 JOIN 的执行顺序优化指南
  • Oracle双平面适用场景讨论会议
  • OD 算法题 B卷【矩阵稀疏扫描】
  • 使用BERT/BiLSTM + CRF 模型进行NER进展记录~
  • HarmonyOS运动开发:精准估算室内运动的距离、速度与步幅
  • Web攻防-SQL注入高权限判定跨库查询文件读写DNS带外SecurePriv开关绕过
  • C语言数据结构笔记3:Union联合体+结构体取8位Bool量
  • 深拷贝与浅拷贝的区别?如何手写实现一个深拷贝?
  • grafana 批量视图备份及恢复(含数据源)