Qt基本组件详解:按钮、输入框与容器控件


目录
  1. 按钮类组件
    • QPushButton
    • QRadioButton
    • QCheckBox
  2. 输入框组件
    • QLineEdit
    • QTextEdit
  3. 容器组件
    • QGroupBox
  4. 综合应用示例
  5. 思维导图总结

1. 按钮类组件

1.1 QPushButton(普通按钮)

功能:基础交互按钮,支持点击事件
核心特性

  • 文本/图标显示
  • 状态变化(按下/悬停)
  • 快捷键支持

源码示例

#include <QPushButton>QPushButton* btn = new QPushButton("提交", this);
btn->setGeometry(50, 30, 100, 40);  // 位置(x,y) 尺寸(宽,高)// 连接点击信号
connect(btn, &QPushButton::clicked, [](){qDebug() << "按钮被点击!";
});

运行效果

  • 显示灰色矩形按钮,文字"提交"
  • 鼠标悬停时高亮显示
  • 点击后控制台输出提示

1.2 QRadioButton(单选按钮)

功能:互斥选择,同一容器内只能选一个
特性

  • 自动互斥(同父组件内)
  • 支持按钮组管理

源码示例

#include <QRadioButton>
#include <QButtonGroup>QRadioButton* radio1 = new QRadioButton("选项1", this);
QRadioButton* radio2 = new QRadioButton("选项2", this);
radio1->move(50, 80);
radio2->move(50, 110);// 创建按钮组
QButtonGroup* group = new QButtonGroup(this);
group->addButton(radio1, 1);  // ID=1
group->addButton(radio2, 2);  // ID=2// 选择变化事件
connect(group, QOverload<QAbstractButton*>::of(&QButtonGroup::buttonClicked),[](QAbstractButton* btn){qDebug() << "选中ID:" << group->id(btn);});

运行效果

  • 显示两个圆形选择框
  • 点击"选项1"时,"选项2"自动取消
  • 选择时打印对应ID

1.3 QCheckBox(复选框)

功能:多选控件,支持三态(选中/未选/部分选)
特性

  • 独立选择
  • tristate模式支持

源码示例

#include <QCheckBox>QCheckBox* check1 = new QCheckBox("苹果", this);
QCheckBox* check2 = new QCheckBox("香蕉", this);
check1->move(50, 150);
check2->move(50, 180);// 三态模式
check2->setTristate(true);// 状态变化事件
connect(check1, &QCheckBox::stateChanged, [](int state){qDebug() << (state ? "选中" : "取消");
});

运行效果

  • "苹果"显示方形复选框
  • "香蕉"显示带方框的复选框(三态)
  • 勾选时控制台输出状态

2. 输入框组件

2.1 QLineEdit(单行输入框)

功能:单行文本输入
核心特性

  • 密码模式
  • 输入验证
  • 占位提示文本

源码示例

#include <QLineEdit>QLineEdit* lineEdit = new QLineEdit(this);
lineEdit->setGeometry(50, 220, 200, 30);
lineEdit->setPlaceholderText("请输入用户名");// 密码模式
QLineEdit* pwdEdit = new QLineEdit(this);
pwdEdit->setGeometry(50, 260, 200, 30);
pwdEdit->setEchoMode(QLineEdit::Password);  // 密码掩码

运行效果

  • 显示矩形输入框,无输入时显示灰色提示文本
  • 密码框输入时显示圆点替代字符

2.2 QTextEdit(多行文本编辑)

功能:富文本编辑器
特性

  • 支持HTML格式
  • 文本查找/替换
  • 滚动条支持

源码示例

#include <QTextEdit>QTextEdit* textEdit = new QTextEdit(this);
textEdit->setGeometry(50, 300, 300, 200);
textEdit->setHtml("<b>加粗文本</b> <i>斜体文本</i>");// 插入纯文本
textEdit->append("追加新行");

运行效果

  • 显示带滚动条的多行编辑区
  • 首行显示加粗和斜体HTML文本
  • 底部追加普通文本行

3. 容器组件:QGroupBox

功能:创建分组容器,增强布局逻辑
特性

  • 带标题边框
  • 管理内部组件状态
  • 支持单选组容器

源码示例

#include <QGroupBox>
#include <QVBoxLayout>QGroupBox* groupBox = new QGroupBox("用户信息", this);
groupBox->setGeometry(300, 30, 250, 200);// 内部布局
QVBoxLayout* layout = new QVBoxLayout;
layout->addWidget(new QLineEdit("姓名"));
layout->addWidget(new QLineEdit("电话"));
groupBox->setLayout(layout);// 单选组容器
QGroupBox* radioGroup = new QGroupBox("性别", this);
radioGroup->setGeometry(300, 240, 250, 100);
QVBoxLayout* radioLayout = new QVBoxLayout;
radioLayout->addWidget(new QRadioButton("男"));
radioLayout->addWidget(new QRadioButton("女"));
radioGroup->setLayout(radioLayout);

运行效果

  • 显示带"用户信息"标题的矩形框
  • 内部包含两个单行输入框
  • "性别"分组框包含两个互斥单选按钮

4. 综合应用示例

#include <QApplication>
#include <QWidget>
#include <QPushButton>
#include <QButtonGroup>
#include <QGroupBox>
#include <QTextEdit>
#include <QVBoxLayout>int main(int argc, char *argv[]) {QApplication app(argc, argv);QWidget window;window.setWindowTitle("Qt组件综合示例");window.resize(600, 400);// 主布局QVBoxLayout* mainLayout = new QVBoxLayout(&window);// 按钮组QGroupBox* btnGroup = new QGroupBox("操作");QHBoxLayout* btnLayout = new QHBoxLayout;btnLayout->addWidget(new QPushButton("保存"));btnLayout->addWidget(new QPushButton("取消"));btnGroup->setLayout(btnLayout);// 文本编辑区QTextEdit* textEdit = new QTextEdit;textEdit->setPlaceholderText("输入内容...");mainLayout->addWidget(btnGroup);mainLayout->addWidget(textEdit);window.show();return app.exec();
}

运行效果描述

  1. 窗口顶部显示"操作"分组框
    • 内部水平排列"保存"和"取消"按钮
  2. 下方显示多行文本编辑区
    • 空白时显示"输入内容…"提示
    • 支持多行文本输入和格式编辑
  3. 窗口尺寸可自由调整
    • 组件随窗口自动缩放

核心要点总结

  1. 按钮类:QPushButton基础交互,QRadioButton互斥选择,QCheckBox多选
  2. 输入控件:QLineEdit处理单行文本,QTextEdit支持富文本编辑
  3. 容器管理:QGroupBox实现视觉分组和逻辑分组
  4. 最佳实践:组合使用按钮组(QButtonGroup)和布局管理器实现复杂界面

原创技术笔记,转载需注明出处。更多系统编程内容持续更新中…

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity Universal Render Pipeline/Lit光照材质介绍

文章目录前言参数介绍1、表面选项1.1 Worflow Mode工作流模式1.2 Surface Type 表面类型1.3 Blending Mode 混合模式1.4 Preserve Specular 保留镜面光照&#xff08;高光&#xff09;1.5 Render Face 渲染面1.6 Alpha Clipping 透明度剪裁1.7 Receive Shadows 是否接收阴影2、…

uni-app ios离线推送,推送后点击推送的链接进入程序后再次回到桌面,无法消除app的角标问题

问题现象&#xff1a; 解决方案&#xff1a; 1、用h5方法清理 h5地址&#xff1a;HTML5 API Reference 废话不多说上代码 /*** 清除应用角标&#xff08;支持iOS和Android&#xff09;* 使用H5方法清理推送角标*/clearAppBadge() {// #ifdef APP-PLUStry {plus.runtime.setBad…

迁移Oracle SH 示例 schema 到 PostgreSQL

接着上一篇文章&#xff1a;迁移Oracle HR 示例 schema 到 PostgreSQL中&#xff0c;本文做Oracle SH&#xff08;Sales History&#xff09;示例 schema的迁移&#xff0c;SH schema比HR schema更大更复杂&#xff0c;本次迁移的重点是&#xff1a; 分区表外部数据加载 使用…

1.1 ARMv8/ARMv9安全扩展

目录1.1.1 ARM架构安全演进1.1.2 ARMv8安全特性异常级别(EL)安全模型关键安全扩展1.1.3 ARMv9安全创新机密计算架构(CCA)增强的隔离机制1.1.4 安全扩展的TF-A支持1.1.5 安全扩展配置示例1.1.1 ARM架构安全演进 ARM架构从v7到v9的安全演进路线&#xff1a; ARMv7&#xff1a;引…

更新用户隐私协议后还是 ail api scope is not declared in the privacy agreement怎么办??!

saveImageToPhotosAlbum:fail api scope is not declared in the privacy agreement昨天明明可以了&#xff0c;开了个会出来&#xff0c;又不行了&#xff0c;真要命啊啊啊啊啊啊啊啊啊啊(现在回想起来可能是因为我把发布的那个版本删了&#xff0c;因为那个只是用来测试用的e…

练习:对象数组 5

定义一个长度为 3 的数组&#xff0c;数组存储 1~3 名学生对象作为初始数据&#xff0c;学生对象的学号&#xff0c;姓名各不相同。学生的属性&#xff1a;学号&#xff0c;姓名&#xff0c;年龄。要求 1&#xff1a;再次添加一个学生对象&#xff0c;并在添加的时候进行学号的…

Linux 中的 .bashrc 是什么?配置详解

如果你使用过 Linux 终端&#xff0c;那么你很可能接触过 .bashrc 文件。这个功能强大的脚本是个性化命令行环境并使其更高效运行的关键。 在本文中&#xff0c;我们将向你介绍这个文件是什么&#xff0c;在哪里可以找到它&#xff0c;以及如何安全地编辑它。你还将学到一些实…

JVM运行时数据区深度解析

&#x1f4be; JVM运行时数据区深度解析 文章目录&#x1f4be; JVM运行时数据区深度解析&#x1f3af; 引言&#x1f4da; 方法区&#x1f4cb; 方法区存储内容&#x1f504; 从永久代到元空间的演进永久代时期&#xff08;JDK 8之前&#xff09;元空间时期&#xff08;JDK 8及…

.NET nupkg包的深度解析与安全防护指南

在.NET开发领域&#xff0c;nupkg包是开发者们不可或缺的工具。它不仅是代码分发和资源共享的核心载体&#xff0c;还贯穿了开发、构建、部署的全流程。今天&#xff0c;我们将深入探讨nupkg包的核心功能、打包发布流程以及安全防护措施&#xff0c;帮助你在.NET开发中更加得心…

Cursor 快速入门指南:从安装到核心功能

引言 Cursor 是一款融合 AI 能力的现代代码编辑器&#xff0c;旨在提升开发者的编码效率。本文将带您从零开始&#xff0c;快速掌握 Cursor 的完整使用流程 - 包括安装配置、项目初始化以及核心 AI 功能的应用。 正文 1. 安装与初始配置 1.1 下载与安装 Cursor 支持跨平台…

自然语言处理中probe探测是什么意思。

文章目录&#x1f539; 1. 英文单词的基本含义&#xff08;动词 & 名词&#xff09;✅ 作为动词&#xff08;to probe&#xff09;&#xff1a;✅ 作为名词&#xff08;a probe&#xff09;&#xff1a;&#x1f539; 2. 不同领域的具体含义&#x1f539; 3. 在机器学习/NL…

【记录】Ubuntu挂载home文件夹到磁盘

问题描述 服务器装好后,home文件夹一般存放各个用户的文件,默认的存储磁盘为系统磁盘,一般比较小,可能几百G,这对于服务器来讲,相当小了,所以需要对home文件夹进行重新调整。 我之前的博文 点击进入 相关配置在重启机器后,磁盘配置自动失效,即配置好后,home在大的磁…

【注意避坑】基于Spring AI 开发本地天气 mcp server,通义灵码测试MCP server连接不稳定,cherry studio连接报错

springboot 版本&#xff1a; 3.5.4 cherry studio版本&#xff1a;1.4.7 通义灵码版本&#xff1a; 2.5.13 文章目录 问题描述&#xff1a;1. 通义灵码添加mcp server &#xff0c;配置测试2. cherry studio工具添加mcp server &#xff0c;配置测试 项目源代码&#xff1a;解…

Paimon LSM Tree Compaction 策略

压缩怎么进行的这里的操作都是KValue&#xff0c;内部有row kind&#xff0c;标记了删除和插入MergeTreeCompactManager 是 Paimon 中 Merge-Tree 结构压缩任务的总调度中心。它的核心职责就是监控文件的层级状态&#xff08;Levels&#xff09;&#xff0c;并在合适的时机&…

小米路由器3C刷OpenWrt,更换系统/变砖恢复 指南

基础篇看这里&#xff1a; 小米路由器3C如何安装OpenWrt官方编译的ROM - 哔哩哔哩 小米路由器 3C 刷入 Breed 和 OpenWrt - Snoopy1866 - 博客园 一、路由器注入 如果按照上面的文章&#xff0c; telnet、ftp一直连接失败,那么可以尝试看 这里&#xff1a; 获取路由器root权…

Spring Boot 项目启动时按需初始化加载数据

1、新建类&#xff0c;类上添加注解 Component &#xff0c;该类用于在项目启动时处理数据加载任务&#xff1b; 2、该类实现 ApplicationRunner 接口&#xff0c;并重写 run 方法&#xff1b; 3、在重写的 run 方法里处理数据加载任务&#xff1b; 注意&#xff1a; 有定时加载…

MCP快速入门—快速构建自己的服务器

引言 随着大语言模型(LLM)技术的快速发展&#xff0c;如何扩展其能力边界成为开发者关注的重点。MCP(Model Capability Protocol)作为一种协议标准&#xff0c;允许开发者构建自定义服务器来增强LLM的功能。 正文内容 1. MCP核心概念与技术背景 MCP服务器主要提供三种能力类…

Vue 事件总线深度解析:从实现原理到工程实践

在 Vue 组件通信体系中&#xff0c;事件总线&#xff08;Event Bus&#xff09;是处理非父子组件通信的轻量解决方案。本文将从技术实现细节、工程化实践、内存管理等维度展开&#xff0c;结合源码级分析与典型场景&#xff0c;带你全面掌握这一核心技术点。​一、事件总线的技…

CMake Qt静态库中配置qrc并使用

CMake Qt序言环境代码序言 看网上这资料较少&#xff0c;且我理解起来有歧义&#xff0c;特地补充 环境 CMake&#xff1a;3.29.2 Qt&#xff1a;5.15.2 MSVC&#xff1a;2022 IDE&#xff1a;QtCreator 代码 方式一&#xff1a; 在CMakeLists.txt里&#xff0c;add_libr…

记录一下:成功部署k8s集群(部分)

前提条件&#xff1a;安装了containerd、docker 关闭了firewalld、selinux 配置了时间同步服务 chronyd 关闭swap分区等1、在控制节点、工作节点&#xff0c;安装kubelet、kubeadm、kubectlyum install -y kubelet-1.26.0 kubeadm-1.26.0 kubectl-1.26.0 …