# QtControDemo **Repository Path**: liushixiong/QtControDemo ## Basic Information - **Project Name**: QtControDemo - **Description**: No description available - **Primary Language**: C++ - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 22 - **Forks**: 8 - **Created**: 2025-12-19 - **Last Updated**: 2026-02-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: Qt, 控件, 自绘 ## README ![](./imgs/wechat_official_account.png) # Qt 控件演示项目 这是一个基于 Qt 的自定义控件演示项目,展示了多个实用的自定义控件实现。 ## 项目简介 本项目包含多个自定义 Qt 控件,主要用于演示和学习 Qt 控件的自定义开发。项目采用 C++11 标准,使用 Qt Widgets 模块开发。 ## 功能特性 ### 1. StateButton - 状态按钮 具有多种状态的按钮控件(Normal、Loading、Success)。 ```cpp #include "Button/statebutton.h" StateButton *btn = new StateButton(parent); btn->setState(StateButton::Normal); // 正常状态 btn->setState(StateButton::Loading); // 加载中 btn->setState(StateButton::Success); // 成功状态 ``` ### 2. ButtonListWidget - 按钮列表组件 ![](./imgs/侧边栏导航.png) 侧边栏导航组件,左侧显示按钮列表,右侧显示对应的页面内容。 ```cpp #include "button_list_widget.h" ButtonListWidget *widget = new ButtonListWidget(parent); widget->addPage("页面1", new QWidget(parent)); widget->addPage("页面2", new QWidget(parent)); ``` ### 3. ProtocolLabel - 协议标签控件 ![](./imgs/协议组件.png) 集成了复选框和超链接的协议同意控件,常用于注册、登录等场景。 #### 主要特性 - 支持复选框选中/未选中状态 - 支持单个或多个协议链接 - 点击标签文本区域可切换复选框状态 - 鼠标悬停在链接上时显示下划线 #### 使用方法 ```cpp #include "Label/protocol_label.h" ProtocolLabel *protocolLabel = new ProtocolLabel(parent); // 设置协议数据 std::vector> protocols = { {"用户协议", "https://www.example.com/user-agreement"}, {"隐私政策", "https://www.example.com/privacy-policy"} }; protocolLabel->setProtocolData(protocols); protocolLabel->setPrefixText("我已阅读并同意"); // 连接信号 connect(protocolLabel, &ProtocolLabel::checkedChanged, [](bool checked) { qDebug() << "协议同意状态:" << checked; }); ``` ### 4. PasswordLineEdit - 密码输入框控件 功能丰富的密码输入控件,支持显示/隐藏密码、清空功能和密码验证。 #### 主要特性 - 显示/隐藏密码切换 - 清空功能 - 实时密码验证 - 视觉反馈(验证通过绿色边框,失败红色边框) #### 密码验证规则 - 长度:6-128 个字符 - 必须包含以下至少一种:数字、字母或特殊字符 #### 使用方法 ```cpp #include "password/password_line_edit.h" PasswordLineEdit *pwdEdit = new PasswordLineEdit(parent); pwdEdit->setPlaceholderText("请输入密码"); connect(pwdEdit, &PasswordLineEdit::passwordValidityChanged, [](bool isValid) { qDebug() << "密码验证:" << isValid; }); ``` ## 编译和运行 ### 环境要求 - Qt 5.x 或 Qt 6.x - C++11 或更高版本 - qmake 构建工具 ### 编译步骤 ```bash qmake ControlDemo.pro make ./ControlDemo ``` ### 使用 Qt Creator 1. 打开 Qt Creator 2. 选择 "打开项目" 3. 选择 `ControlDemo.pro` 文件 4. 配置构建套件并运行 ## 测试示例 项目包含完整的测试示例,运行程序后可以在界面中查看各个控件的使用效果。 ## 技术特点 - 现代化设计,使用 Qt 样式表实现美观的 UI - 清晰的代码结构,易于扩展 - 包含详细的使用示例和测试代码 - 使用 SVG 图标,支持高分辨率显示 ## 许可证 请查看 LICENSE 文件了解许可证信息。 ## 贡献 欢迎提交 Issue 和 Pull Request! ## 作者:刘世雄 公众号:cpp手艺人 --- **注意**:本项目主要用于学习和演示目的,可以根据实际需求进行修改和扩展。