ARM Linux 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 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"));

即可直接使用。

ARM LINUX QT 虚拟键盘配置文件

  • 2
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: Qt5.5是一个跨平台的应用程序开发框架,可以在不同的操作系统上运行。虚拟键盘是一种软件键盘,可以通过屏幕触摸或鼠标点击进行输入。 在ARM Linux平台上,使用Qt5.5进行虚拟键盘的开发可以很方便地实现。首先,需要在Qt中创建一个窗口,并在窗口中设计键盘的布局和样式。可以使用Qt提供的控件,例如按钮、文本框等来创建键盘的各个按键。 然后,需要在代码中设置键盘的响应事件,即键盘按下或释放时的操作。可以通过重写QWidget类的keyPressEvent和keyReleaseEvent方法,来获取键盘输入事件并进行相应的处理。例如,当按下某个按键时,可以将按键的字符或者对应的键值添加到输入的文本框中。 同时,还可以通过Qt的信号与槽机制来实现键盘的功能。可以将每个按键与一个槽函数进行连接,当按键被点击时,触发相应的槽函数进行操作。 最后,在ARM Linux平台上进行虚拟键盘的部署。首先,需要将代码编译为ARM架构的可执行文件。然后,将可执行文件和相关的资源文件(如键盘的布局和样式文件)一起打包,并在ARM Linux上进行安装。 总的来说,使用Qt5.5进行虚拟键盘的开发是相对容易的,可以在ARM Linux平台上实现一个功能完善的虚拟键盘应用程序。 ### 回答2: 在ARM Linux平台上使用Qt5.5开发虚拟键盘是可行的。Qt是一个跨平台的开发框架,支持基于ARM架构的Linux系统。虚拟键盘是一个常见的输入界面,可以通过Qt5.5提供的功能和API来实现。 首先,需要在ARM Linux系统上安装Qt5.5开发环境。可以从Qt官网下载相应的Qt安装包,并按照官方指南进行安装。安装完成后,可以在开发环境中打开Qt Creator创建一个新的项目。 在项目中,可以使用Qt提供的QWidget或QML来进行虚拟键盘的界面设计。QWidget是一个传统的窗口小部件,而QML是一种声明式的语言用于快速创建用户界面。选择合适的界面设计方式,根据需求进行布局、设计键位、样式等。 接下来,使用Qt提供的事件处理机制来处理虚拟键盘的用户输入。通过重写键盘事件处理函数,可以捕捉到用户的按键操作。根据按键事件的类型和内容,可以在代码中实现相应的逻辑,如字符输入、特殊功能键等。 最后,编译并部署程序到ARM Linux设备上进行测试。Qt提供了丰富的交叉编译工具链支持,可以将应用程序编译为ARM架构下的可执行文件。将编译后的程序拷贝到ARM Linux设备上,运行即可测试虚拟键盘的功能。 总而言之,在ARM Linux平台上使用Qt5.5实现虚拟键盘是可行的。通过合适的界面设计和事件处理,可以实现一个用户友好的虚拟键盘应用。同时,Qt的跨平台特性还可以方便地将虚拟键盘移植到其他平台上使用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值