Qt 虚拟键盘使用

914 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

头图

Qt 虚拟键盘使用

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


[TOC]

关键字: virtualkeyboardQt5showFullScreenQScreenplugins

使用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 和pluginsqml无脑复制过去,即可。到此问题解决,问了一个礼拜别人,最终还是得自己解决。

image-20220325144626814


博客签名2021