Qt 虚拟键盘使用

Qt 在5.7 以后增加了虚拟键盘,我们在某些对样式没有要求的场合,可以快速使用Qt官方的虚拟键盘。在使用过程中,主要遇到两个问题,第一个问题就是在全屏状态下,键盘无法弹出显示,但是已经可以点击键盘按键对应的区域,并且有反应,就是没有显示;第二个问题就是在没有安装Qt的环境中部署,不显示中文问题。下面一个一个来说。





文章目录





关键字:​ ​​virtualkeyboard​​​、​​Qt5​​​、​​showFullScreen​​​、​​QScreen​​​、​​plugins​


使用Qt虚拟键盘

PRO文件中包含模块

QT += virtualkeyboard                                                   # 虚拟键盘支持

Main函数中开启

​ 这里有个地方需要注意,一定要在​​QApplication a(argc, argv);​​之前开启。

#if (QT_VERSION >= QT_VERSION_CHECK(5, 7, 0))                
qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard"));

到这里,基本可以使用了,就会出触发我上面那两个问题。

解决全屏弹出键盘问题

解决全屏键盘无法弹出问题,这里使用了一个小技巧,就是把窗口编程不是全屏显示,缩小一个像素,测试感觉没有太大变化。核心代码如下

/*
* 这里有部分代码完全是为了解决全屏下虚拟键盘无法弹出问题而写,在后期子写了自己的键盘,就可以去掉了
*/
QScreen *screen = QGuiApplication::primaryScreen(); // 为弹出虚拟键盘而搞
QRect screenRect = screen->availableGeometry(); // 为弹出虚拟键盘而搞
if(ui->widget_case_edit->isHidden())
{
this->setGeometry(0,0,screenRect.width(),screenRect.height()-1); // 为弹出虚拟键盘而搞
ui->widget_case_edit->show();
}
else
{
ui->widget_case_edit->hide();
this->showFullScreen(); // 为弹出虚拟键盘而搞
}

解决无Qt环境不是不能中文问题

​ 这里其实更好解决了,其实可以好好的排除一下,这里我的硬盘空间很多,不会在乎硬盘空间,这直接无脑吧Qt 的​​bin​​​文件夹下的dll 和​​plugins​​​、​​qml​​无脑复制过去,即可。到此问题解决,问了一个礼拜别人,最终还是得自己解决。

Qt 虚拟键盘使用_plugins


Qt 虚拟键盘使用_plugins_02