Qt自己编写keyboad虚拟键盘
由于项目中有需要用到虚拟键盘,首先想到的是系统自带的,笔者是Ubuntu16+Qt5.9。
1.系统虚拟键盘的优缺点:
优点:直接可以脚本调起,功能完善,稳定。外观完美。
缺点:定制麻烦(详情看onboard帮助文档,英文),要想像手机那样用时自动显示,不用时自动隐藏,需要先设置系统的输入法,而且需要GNome的辅助功能支持。
2.Qt5已经有自带输入法了。Qt安装的时候就有一个virtualkeyboard选项,安装即可,编译生成完了,会在安装目录的plugins/plaforminputcontexts目录下。
优点:美观,方便,功能完善,跨平台,支持中文
缺点:定制的话在于改源代码的能力了,这是一个基于qml开发的插件,所以如果是widget使用的话需要用qquickwidget组件包装才能正常调出键盘。
3.自己写一个plaforminputcontextsplugin
这个呢,非常感谢下面两篇连接的作者,链接如下:
优点:能实现简单定制键盘,可以了解并学习Qt插件开发规则
缺点:该input插件依赖DBus通信,而windows对DBus支持有很多问题要解决,
所幸Ubuntu是没问题的(好像搜狗的拼音,也是有开发Qt插件的,在linux平台的Qtcreator支持上,否则搜狗也是不能用于QtCreator的中文输入)源代码链接
4.在3的基础上自己封装定制dll
在应用程序中添加本地库到当前工程,在pro文件中加以下类似代码:
LIBS += -L$$OUT_PWD/../keyboard/debug/ -lkeyboard
然后在主程序中调用即可
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Keyboard objKeyboard;//创建对象
objKeyboard.showDigital();//显示数字键盘
MainWindow w;
w.show();
return a.exec();
}
优点:自由定制,重复利用,跨平台。最后上个效果图。