qt5.7的qtvirtualkeyboard在ubuntu上编译安装后可用,在板子上则不行,直接以系统方式调用根本调不出来,而如果以应用内嵌方式虽然点击TextField后能弹出输入窗口却不能输入文字,每次点击虚拟字母按键都会弹出"intupt method is not set"的提示。
解释:ubuntu启动QGuiApplication会加载xcb-qpa插件作为图形后端对接程序,该插件会正确处理来自x11窗口的窗口激活事件及焦点改变事件传给qtplatformcontext,使后者能保存当前焦点窗口控件,继而能调用qtvirtualkeyboard的处理按键操作方法。
而am335x官方提供的yocto基于arago,默认使用wayland+weston作为图形后端,与qt对接的插件为qtwaland,后者需要在启动图形程序时初始化键盘组件才能把窗口激活及焦点变化通知给qt框架,否则如果系统中没有物理键盘驱动(对应的event文件)将导致qtplatformcontext一直未能持有当前焦点控件,也就不能获得正确的inputmethod来处理qtvirtualkeyboard的点击操作,所以一直报上述错误,欲修正该问题需要在板子上配置物理键盘驱动,GPIO数字键盘即可。