Qt 虚拟键盘使用
Posted DreamLife.
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt 虚拟键盘使用相关的知识,希望对你有一定的参考价值。
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 虚拟键盘使用的主要内容,如果未能解决你的问题,请参考以下文章