# TouchKeyboard **Repository Path**: leichaoo/touch-keyboard ## Basic Information - **Project Name**: TouchKeyboard - **Description**: 一个专为触摸一体机设计的Qt键盘组件,支持简洁模式和全键盘模式切换。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-09-23 - **Last Updated**: 2026-02-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # TouchKeyboard - Qt工业触摸键盘组件 一个专为触摸一体机设计的Qt键盘组件,支持简洁模式和全键盘模式切换。 ## 功能特点 ### 🎯 核心功能 - **双模式切换**: 简洁模式(数字计算器)和全键盘模式 - **触摸优化**: 按钮尺寸适合手指操作,间距合理 - **智能定位**: 键盘自动避免遮挡输入框 - **拖拽移动**: 支持鼠标/触摸拖拽键盘位置 - **平滑动画**: 显示/隐藏动画效果 ### 📱 简洁模式 ![Simple Mode](./image/简洁模式.png) - 数字键盘 (0-9) - 功能键 (清除, 退格, 确认) - 大尺寸按钮 (70x60 像素) ### ⌨️ 全键盘模式 ![Full Mode](./image/全键盘模式.png) - 完整QWERTY字母键盘 - 数字键 (0-9) - 常用符号和标点 - 功能键 (中英文切换空格, 回车, 删除等) - 中等尺寸按钮 (45x40 像素) ### 🎨 界面设计 - 半透明背景,阴影效果 - 蓝色功能键,白色字符键 - 响应式布局,自适应内容 - 触摸友好的视觉反馈 ## 技术规格 - **Qt版本**: 5.15.2 - **编程语言**: C++17 - **构建系统**: QMake - **平台支持**: Windows (主要), Linux, macOS - **架构**: x64 ## 快速开始 ### 环境要求 - Qt 5.15.2 或更高版本 - QMake (Qt自带) - Visual Studio 2019 (Windows) 或 GCC/Clang (Linux/macOS) ### 编译步骤 #### 🎯 推荐方式:使用QMake **Windows:** ```cmd # 一键构建 build_qmake.bat # 或快速构建 quick_build.bat # 或手动构建 mkdir build && cd build qmake ../TouchKeyboard.pro nmake release ``` **Linux/macOS:** ```bash # 使用构建脚本 chmod +x build_qmake.sh ./build_qmake.sh # 或手动构建 mkdir build && cd build qmake ../TouchKeyboard.pro make -j4 ``` ### 运行程序 ```bash # Windows cd build\release TouchKeyboard.exe # Linux/macOS cd build ./TouchKeyboard ``` > 📝 **注意**: 项目现在主要使用QMake构建系统,比CMake更适合Qt项目。详细说明请参考 [BUILD_QMAKE.md](BUILD_QMAKE.md)。 ## 使用方法 ### 基本用法 ```cpp #include "simplekeyboard.h" // 创建键盘实例 SimpleKeyboard *keyboard = new SimpleKeyboard(); // 显示键盘并绑定到输入框 QLineEdit *inputField = new QLineEdit(); keyboard->showKeyboard(inputField); // 设置键盘模式 keyboard->setMode(TouchKeyboard::SimpleMode); // 简洁模式 keyboard->setMode(TouchKeyboard::FullMode); // 全键盘模式 ``` ### 信号连接 ```cpp // 监听按键事件 connect(keyboard, &TouchKeyboard::keyPressed, [](const QString &key) { qDebug() << "Key pressed:" << key; }); // 监听模式切换 connect(keyboard, &TouchKeyboard::modeChanged, [](TouchKeyboard::KeyboardMode mode) { qDebug() << "Mode changed to:" << (mode == TouchKeyboard::SimpleMode ? "Simple" : "Full"); }); ``` ## 项目结构 ``` TouchKeyboard/ ├── main.cpp # 程序入口 ├── mainwindow.h/cpp # 演示主窗口 ├── touchkeyboard.h/cpp # 键盘基类 ├── simplekeyboard.h/cpp # 键盘实现类 ├── fullkeyboard.h/cpp # 全键盘实现(备用) ├── keyboardbutton.h/cpp # 自定义按钮组件 └── README.md # 项目说明 ``` ## 核心类说明 ### TouchKeyboard (基类) - 提供键盘的基础功能 - 处理拖拽、定位、动画 - 定义模式切换接口 ### SimpleKeyboard (实现类) - 继承自TouchKeyboard - 实现简洁模式和全键盘模式布局 - 处理按键事件和输入逻辑 ### KeyboardButton (按钮组件) - 继承自QPushButton - 触摸优化的按钮样式 - 支持不同尺寸和功能键样式 ### MainWindow (演示程序) - 提供完整的测试界面 - 展示各种输入场景 - 演示键盘功能和特性 ## 自定义和扩展 ### 添加新的按键 ```cpp // 在布局中添加自定义按键 KeyboardButton *customBtn = new KeyboardButton("自定义", "custom_value"); customBtn->setFunctionKey(true); layout->addWidget(customBtn, row, col); connect(customBtn, &KeyboardButton::keyPressed, this, &TouchKeyboard::onKeyPressed); ``` ### 自定义键盘布局 ```cpp class CustomKeyboard : public TouchKeyboard { protected: void createSimpleLayout() override { // 实现自定义简洁模式布局 } void createFullLayout() override { // 实现自定义全键盘布局 } }; ``` ### 样式定制 ```cpp // 修改KeyboardButton的样式 button->setStyleSheet( "KeyboardButton {" " background-color: #your-color;" " border-radius: 8px;" " font-size: 14px;" "}" ); ``` ## 性能优化建议 1. **按钮重用**: 避免频繁创建/销毁按钮 2. **布局缓存**: 缓存已创建的布局 3. **动画优化**: 根据设备性能调整动画参数 4. **内存管理**: 及时释放不需要的资源