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

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.xdnf.cn/news/889597.html

相关文章:

  • 【TinyWebServer】线程同步封装
  • Raw Denoising 论文,以及如何制作noisy-clean图像对
  • AI问答-vue3+ts+vite:http://www.abc.com:3022/m-abc-pc/#/snow 这样的项目 在服务器怎么部署
  • 亲测解决self.transform is not exist
  • vscode里如何用git
  • TIA博途中的程序导出为PDF格式的具体方法示例
  • [zynq] Zynq Linux 环境下 AXI BRAM 控制器驱动方法详解(代码示例)
  • MYSQL(三)--服务器启动参数与配置
  • 群晖NAS如何在虚拟机创建飞牛NAS
  • ABP VNext 在 Kubernetes 中的零停机蓝绿发布
  • Abaqus载荷与边界条件(Load BC)
  • 将 Jupyter Notebook 的默认存储路径从 C 盘迁移到 D 盘,可以通过以下步骤实现:
  • 【教学类】20250605立体纸盘(3边形-22边形,角度5、10……40,45)
  • TikTok养号指南:从0到1打造防限流账号的实战策略
  • 【西门子杯工业嵌入式-1-基本环境与空白模板】
  • 瞄准企业级智能体,艺赛旗加速业务出海重塑数智生产力
  • 【LeetCode】1061. 按字典序排列最小的等效字符串(并查集)
  • 如何给windos11 扩大C盘容量
  • CICD实战(二)-----gitlab的安装与配置
  • 热门消息中间件汇总
  • 【计算机网络】五种IO模型——非阻塞IO
  • 使用SSH tunnel访问内网的MySQL
  • 工厂模式 + 模板方法模式 + 策略模式的适用场景
  • 消息的幂等性
  • 【笔记】MSYS2 的 MINGW64 环境 全面工具链
  • 3DEXPERIENCE参考属性和实例属性的获取
  • VUE混合开发用哪个PHP框架好?
  • 三级等保框架下质检 LIMS 系统违规操作溯源技术应用实践
  • 极昆仑智慧与数元灵科技达成战略合作
  • redis配置及优化