在嵌入式领域,我们可能需要在项目中设计虚拟键盘供用户使用,之前只实现过数字键盘,要实现全尺寸功能键盘,首先想到的是学习官方例程,但是官方使用QML实现,那么有没有好的开源虚拟键盘项目供我们学习使用呢。
经过漫长的查找和筛选,我选择了Qt君的QtKeyboard,对于我来说和项目中的需求比较符合,Github项目地址:
https://github.com/aeagean/QtKeyboard
项目运行效果如图:
那么如何将键盘添加到自己的项目中,并按需修改呢,接下来分享一下博主自己的修改过程:
(这是博主第一次使用开源轮子,如果有操作不当,希望大家在评论区指出)
1.将键盘类文件导入
打开Keyboard文件,将所有资源文件复制到自己的项目目录下,然后在项目中添加现有文件
2.将Resource文件复制到项目目录,然后在项目中新建Qt资源文件并添加.qrc文件
3.在项目.pro文件下启用汉字库(可以参考源项目的.pro文件)
4.在需要用到键盘的页面导入头文件并声明Keyboard对象,至此我们的虚拟键盘已经建立成功
博主在页面中还添加了一个QLineEdit显示数据方便保存发送到主窗口,弹出的键盘页面如下
后续:更改样式 | 修改按钮功能
更改样式:可以在KeyButton.cpp文件找到作者的 DEFAULT_STYLE_SHEET 修改,也可以在自己的.ui文件中直接给QPushButton组件设置样式覆盖,不必多说
修改按钮功能:原Enter键是换行功能,我需要改成保存文本并发送sendData信号,那么我们查阅现有代码后,找到绑定功能按键函数的部分
可以看到这里为功能按键绑定了自定义点击事件,我们找到Key_Enter并跳转到switchEnter(),在里面实现自己的逻辑代码。