Qt 虚拟键盘使用
Qt 在5.7 以后增加了虚拟键盘,我们在某些对样式没有要求的场合,可以快速使用Qt官方的虚拟键盘。在使用过程中,主要遇到两个问题,第一个问题就是在全屏状态下,键盘无法弹出显示,但是已经可以点击键盘按键对应的区域,并且有反应,就是没有显示;第二个问题就是在没有安装Qt的环境中部署,不显示中文问题。下面一个一个来说。
文章目录
- Qt 虚拟键盘使用
- 使用Qt虚拟键盘
- PRO文件中包含模块
- Main函数中开启
- 解决全屏弹出键盘问题
- 解决无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
无脑复制过去,即可。到此问题解决,问了一个礼拜别人,最终还是得自己解决。