这个仓库包含众多 Qt 示例,展示了从基础 UI 组件到高级网络编程和系统工具的各种功能。每个示例都是自包含的,可以作为您自己 Qt 项目的参考或起点。
Battery - 电池电量指示器小部件
BatteryQuick - 电池小部件 (QtQuick)
- 使用 QtQuick 实现的电池指示器
好的,这是对 Bootstrap
示例的详细说明部分,您可以将其替换到 README 中。
Bootstrap - 开机自启动管理
跨平台的开机自启动管理模块,支持 Windows、macOS 和 Linux 系统。
- 一键设置:简单 API 控制自启动开关
- 状态检测:实时检测自启动状态
- 权限适配:自动处理不同平台权限要求
- 延迟启动:解决 Linux 图形界面依赖问题
- 用户级:
HKEY_CURRENT_USER\...\Run
(无需管理员权限) - 系统级:
HKEY_LOCAL_MACHINE\...\Run
(需要管理员权限) - 通过
QSettings
操作注册表
- LaunchAgent 机制
- plist 文件配置到
~/Library/LaunchAgents/
- 使用
launchctl
命令管理
- 推荐:systemd user service (
~/.config/systemd/user/
) - 备选:Desktop 文件自启动 (
~/.config/autostart/
) - 支持延迟启动避免图形界面依赖问题
BubbleWindow - 气泡式对话框/工具提示
Chart - 数据可视化图表
CheckBoxStandardItem - 可勾选的树形项
Clock - 模拟时钟小部件
DashBoard - 仪表盘指示器
DragDrop - 拖放功能实现
- 自定义拖放功能
- 基于 Qt 的拖放拼图示例
FlowLayout - 流式布局容器
GridViewModel - 自适应网格视图
HttpClient - HTTP 客户端实现
- 支持 JSON 请求的 HTTP 客户端
- 文件上传/下载功能
- 支持 DELETE 请求
IconButton - 状态感知图标按钮
- 具有状态相关图标的按钮
- 事件过滤器实现
ImageCarousel - 图片轮播组件
LoadingIndicator - 加载动画
LogAsynchronous - 异步日志系统
一个高性能的异步日志库,采用生产者-消费者模型,专门解决多线程环境下同步写日志的性能瓶颈问题。
- 前后端分离:应用程序线程只将日志添加到内存缓冲区,专用日志线程负责写入磁盘
- 无阻塞设计:写日志操作不会阻塞应用程序主线程
- 双滚动策略:支持按文件大小(接近1GB)和按时间(每日零点)自动滚动日志文件
- 格式:
应用名.时间.主机名.进程ID.log[.序号]
- 示例:
MyApp.2023-10-15-14-30-25.HOSTNAME.12345.log
(基础文件)MyApp.2023-10-15-14-30-25.HOSTNAME.12345.log.1
(滚动文件)
结构化日志格式,包含丰富上下文信息:
2023-10-15 14:30:25.918 28456 [Info] 用户登录成功 File:(main.cpp) Line:(42)
包含时间戳(毫秒)、线程ID、日志级别、消息内容和源代码位置。
此模块与Qt-App项目中的日志实现共享相同设计理念,建议集成时参考两个实现选择最适合的版本。
MulClient - 多线程 TCP 客户端
- 多客户端连接
- 每个客户端一个线程的架构
MulServer - 多线程 TCP 服务器
- 每个客户端一个线程的服务器实现
- 实时 TCP 通信
NavigationProgressBar - 导航进度条
PasswordLineEdit - 密码输入字段
ProgressArc - 圆形进度指示器
ProgressBar - 圆角进度条
ReactorServer - Reactor 模式服务器
- Reactor 设计模式实现
- 多线程回声服务器
ShowInMyComputer - 系统集成
- 在系统位置中显示应用程序
- 防火墙白名单
SimpleUdp - UDP 通信
- UDP 广播和接收
- 简单网络通信示例
SlipButton - 滑动切换按钮
SqliteWAL - SQLite 预写式日志
- 多线程 SQLite 数据库操作
- WAL 模式实现
- 线程安全写入操作
TableViewModel - 高级表格视图
Thread - 多线程示例
- 6 种不同的线程处理方法
- QThread 使用模式
TreeViewModel - 树形和列表视图
Validator - 增强型输入验证器
- 改进的 IntValidator 和 DoubleValidator
- 自定义验证规则
packaging - 跨平台打包解决方案
- 参考实现: Qt-App macOS 打包
- 核心文件:
- DMG 打包:
- create-dmg:最简单;
- create-dmg:Bash 脚本;
- node-appdmg:json 配置文件;
- dmgbuild:Python 脚本;
- entitlements.plist - 应用程序签名权限配置文件
- package.sh - 主要打包脚本,这里包含签名过程,Qt-App macOS 打包这里没有签名过程
- utils.sh - 打包辅助函数
- DMG 打包:
- 参考实现: Qt-App Windows 打包
- 核心文件:
- sign.bat - 代码签名脚本,支持集成到 Inno Setup
- 签名集成: 将 sign.bat 中的签名脚本集成到 Inno Setup 工具:
- 在 Inno Setup 中选择
Tools
→Configure Sign Tools
- 添加签名工具并粘贴 sign.bat 中的脚本内容
- 在打包脚本中为需要签名的文件添加对应的 sign flags 参数
- 在 Inno Setup 中选择
- 参考实现: Qt-App Ubuntu 打包