ARM Linux QT虚拟键盘的系列问题
本文解决以下问题:(1)QT自身不带有虚拟键盘;(2)QT虚拟键盘部署方法;(3)QT虚拟键盘遮挡输入框;(4)QT虚拟键盘全屏不显示问题。
最近在做Linux系统的虚拟键盘功能,其中遇到很多问题,在此一一记录。
使用的系统平台为ARM Ubuntu18.04的系统,安装的QT版本为5.9.5,使用指令安装QT,安装后该版本QT默认不带虚拟键盘。
本文附带虚拟键盘所使用的部署文件,如果没有太大需求可以直接使用文件部署。
遇到的问题包括以下几个,有相同问题的可以往下继续:
(1)QT自身不带有虚拟键盘;
(2)QT虚拟键盘部署方法;
(3)QT虚拟键盘遮挡输入框;
(4)QT虚拟键盘全屏不显示问题。
一、使用指令安装QT,安装后的QT不带有虚拟键盘的功能。
该问题解决方法有两种:
1、从网上找虚拟键盘的源码编译,编译完成后进行部署。
2、使用源码安装完整版QT,安装好后编译虚拟键盘然后进行部署。
第一种方法,我找了几个虚拟键盘的例子进行编译,多多少少都有一些依赖库没有的问题,后来放弃了。
第二种方法,编译QT完成版的源码,需要花费一天时间。具体编译方法大家自行搜索吧。
二、QT虚拟键盘的部署方法
参考链接:
三、QT虚拟键盘遮挡输入框问题
部署完成后,查看效果,系统默认输入法比较大,会遮盖输入框,导致输入时完全看不到输入的内容。
该问题有两种解决方式:
第一种:动态获取文本框的内容,在虚拟键盘的界面添加输入框,将文本框的内容传入输入框后进行编辑,编辑完成后再传回文本框。
第二种:调整键盘布局,只保留下半部分。
因时间关系使用第二种方式解决该问题,具体解决方式参考以下链接:
四、QT虚拟键盘在软件全屏状态下不显示问题
由于Linux软件设置为开机自启动,开机后全屏运行,测试时发现虚拟键盘无法正常调用。
有两个问题,一个问题为不显示输入光标,另一个问题为键盘不弹出。
经过测试分析:
不显示输入光标的原因为界面焦点在界面切换时未切换到当前界面,使用鼠标点击页面后,可看到光标。
键盘不弹出问题,为页面显示遮挡住了软键盘,导致软键盘不显示。
针对这两个问题的原因,给出解决方法。
1、在界面切换时,调用activateWindow();显示时调用showFullScreen();
假设新打开的窗口名称为Form1,则在显示该窗口的代码中调用 :
Form1->activateWindow();
Form1->showFullScreen();
一定要使用showFullScreen()函数,不能使用show()函数,使用showFullScreen()函数可以将焦点切到当前界面,并显示输入光标。
2、在界面显示时,调用lower();函数将当前界面下调一个层级,使得软键盘可以显示出来。
假设窗口名称为Form1,则在showEvent()的显示事件中调用lower();
this->lower();
该指令为将当前界面在显示是,下调一个层级,这样软键盘就可以显示出来了。在showEvent()事件设置即可。
3、如果软键盘或者实体键盘不能输入任何字符,则需调用this->releasekeyboard()函数释放键盘,释放后则可以正常调用了。
解决后的效果如下:
附带QT虚拟键盘的配置文件,直接将文件复制到执行文件目录即可,并在QT工程的main函数中,在QApplication前添加:
qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard"));
即可直接使用。
更多推荐
所有评论(0)