Qt开发嵌入式设备实现中文软键盘

原文地址

原文链接

前言

如果要在Qt下实现软键盘的应用程序,在非嵌入式设备下就一行代码就可以处理了

qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard"));

如果你希望自定义样式或者输入法,而你的嵌入式设备使用的是QML前端框架,也比较相对比较简单,可以参考Resize qtvirtualkeyboard according to QObject,以及官网相关说明

但是如果你使用的纯Widgets开发,而且又不希望混用QML的话就会稍微麻烦点了

生成自定义的虚拟动态链接库

如果你有更好的解决方案,可以在下方评论区提出,或者联系站长,这里我们是通过修改开源QWidgetvirtualkeyboard实现来处理这个问题的,相对来说比较简单,开源库地址

这个方案源码只支持Qt5Qt6下使用需要自行修改源码,修改处并不算特别多,有Qt6需求的按报错修改即可。使用步骤和他的文档中差不多,我这里仅作一些补充,大概说明一下源码主要文件以及修改方向

关于样式主要文件有KeyboardContainer键盘容器,定义了主键盘的样式以及上方中文字符选择列表的样式,NormalKeyboard定义了主键盘字符案件,没有特殊需求不必修改,SymbolKeyboard同理,CandidatesListWidget为中文选择列表类定义了一些样式和选择规则,InputContext输入初始化类,这个容易被忽视,这个他重写了键盘容器的位置和大小,如果需要调整键盘容器的位置和大小需要在这里调整

修改完源码,然后就是编译生成动态链接库了,如果你在Linux下打包生成的就是.so文件,如果是在windows下进行编译,生成就是.dll文件。Windows编译比较简单,直接点就行了,Linux下需要跑编译命令/your/qt/path/qmake xxxx.pro && make

  • 先编译pinyin,注意,他用的中文字符库应该是GB2312的,对于中文字符的收录不全,就是我们xp时代自带的打字法所包含的字符,如果有生僻字需求需要更换字符相关的资源文件

  • 再编译qt5softkeyboard,将生成在bin/plugins/platforminputcontexts/目录下的动态链接库拷贝到${YOUR_QT_DIR}/gcc/plugins/platforminputcontexts

  • 最后在你的主程序中添加加载代码即可

    qputenv("QT_IM_MODULE",QByteArray("Qt5Input"));
    

原文地址

原文链接

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值