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

qt QGroupBox详解

1、概述

QGroupBox是Qt框架中的一个容器控件,主要用于组织和管理一组相关的控件(如按钮、复选框、文本框等),并为这些控件提供一个框架和标题。通过使用QGroupBox,可以创建具有逻辑分组和视觉层次结构的用户界面,使得界面更加清晰和易于理解。在创建分组的控件或信息时,QGroupBox非常有用,比如在表单、设置面板中,用于将相关的选项或控件归纳在一起,提高用户体验。

2、重要方法
  • 构造函数:QGroupBox(QWidget *parent = nullptr)和QGroupBox(const QString &title, QWidget *parent = nullptr)。这两个构造函数分别用于创建无标题和有标题的分组框。
  • setTitle(const QString &title):设置分组框的标题。
  • setCheckable(bool checkable):设置分组框是否为复选框模式。当设置为可选中时,标题左侧会出现一个复选框,用户可以通过点击复选框来选择或取消选择整个分组。
  • setChecked(bool checked):在复选框模式下,设置分组框是否被选中。
  • setAlignment(Qt::Alignment alignment):设置分组框标题的对齐方式。
  • setFlat(bool flat):设置分组框是否为扁平化样式。当设置为扁平化时,QGroupBox的边框和标题样式可能会发生变化,具体效果取决于操作系统和Qt样式。

3、重要信号
  • toggled(bool checked):当QGroupBox的选中状态发生变化时(从选中到未选中,或从未选中到选中),会发出此信号。信号的参数checked表示新的选中状态。这个信号在复选框模式下有效。
  • clicked() 和 clicked(bool):点击QGroupBox控件时,会发射这些信号。
#include <QApplication>
#include <QWidget>
#include <QVBoxLayout>
#include <QGroupBox>
#include <QLabel>
#include <QLineEdit>
#include <QCheckBox>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    // 创建主窗口
    QWidget mainWindow;
    mainWindow.setWindowTitle("QGroupBox Example");
    mainWindow.resize(400, 300);

    // 创建 QVBoxLayout 布局管理器
    QVBoxLayout *mainLayout = new QVBoxLayout(&mainWindow);

    // 创建第一个分组框
    QGroupBox *groupBox1 = new QGroupBox("Personal Information", &mainWindow);
    QVBoxLayout *groupBox1Layout = new QVBoxLayout(groupBox1);
    QLabel *nameLabel = new QLabel("Name:", groupBox1);
    QLineEdit *nameLineEdit = new QLineEdit(groupBox1);
    QLabel *ageLabel = new QLabel("Age:", groupBox1);
    QLineEdit *ageLineEdit = new QLineEdit(groupBox1);
    groupBox1Layout->addWidget(nameLabel);
    groupBox1Layout->addWidget(nameLineEdit);
    groupBox1Layout->addWidget(ageLabel);
    groupBox1Layout->addWidget(ageLineEdit);

    // 创建第二个分组框,并设置为复选框模式
    QGroupBox *groupBox2 = new QGroupBox("Options", &mainWindow);
    groupBox2->setCheckable(true); // 设置为复选框模式
    groupBox2->setChecked(true); // 初始状态为选中
    QVBoxLayout *groupBox2Layout = new QVBoxLayout(groupBox2);
    QCheckBox *checkBox1 = new QCheckBox("Enable feature A", groupBox2);
    QCheckBox *checkBox2 = new QCheckBox("Enable feature B", groupBox2);
    groupBox2Layout->addWidget(checkBox1);
    groupBox2Layout->addWidget(checkBox2);

    // 将两个分组框添加到主布局
    mainLayout->addWidget(groupBox1);
    mainLayout->addWidget(groupBox2);

    // 显示主窗口
    mainWindow.show();

    return app.exec();
}

觉得有帮助的话,打赏一下呗。。

           


http://www.kler.cn/a/375598.html

相关文章:

  • 【深度学习】CrossEntropyLoss需要手动softmax吗?
  • 让Chrome⽀持⼩于12px 的⽂字⽅式有哪些?区别?
  • UE Mutiplayer(1):网络概述
  • Flinksql 模拟 视图 监听
  • Java中的线程安全问题(如果想知道Java中有关线程安全问题的基本知识,那么只看这一篇就足够了!)
  • WPF+MVVM案例实战(九)- 霓虹灯字效果控件封装实现
  • IO详解(BIO、NIO、实战案例、底层原理刨析)
  • CSS3简介(一)
  • 解决项目中图片出不来的bug
  • ubuntu启动慢,如何看启动耗时分布
  • 分布式 ID 生成策略(二)
  • Redis 内存回收策略小结
  • Spark中的常见算子
  • ubuntu22-安装vscode-配置shell命令环境-mac安装
  • Serverless + AI 让应用开发更简单
  • 报错:npm : 无法加载文件 C:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚本。
  • vue3-element-admin 去掉登录
  • Docker Compose入门学习——下载、授权、创建文件、定义服务
  • 创建一个基于SSM(Spring, Spring MVC, MyBatis)的教学视频点播系统
  • Sigrity Power SI Multiple Structure Simulation模式如何进行跨板级联仿真操作指导(一)
  • npm install -g @vue/cil 非常卡慢
  • linux alsa-lib snd_pcm_open函数源码分析(一)
  • 腾讯云数据库TDSQL:数据库界的“高架桥”
  • 【论文阅读】Associative Alignment for Few-shot Image Classification
  • ESP-IDF HTTP POST请求发送音频-启明云端乐鑫代理商
  • 【机器学习】21. Transformer: 最通俗易懂讲解