Qt 虚拟键盘使用

Posted DreamLife.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt 虚拟键盘使用相关的知识,希望对你有一定的参考价值。

Qt 虚拟键盘使用

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


文章目录

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


以上是关于Qt 虚拟键盘使用的主要内容,如果未能解决你的问题,请参考以下文章

ARM Linux Qt5.7.1软键盘及虚拟键盘使用

Qt虚拟键盘全屏

Qt 虚拟键盘自定义样式

Qt 虚拟键盘和 QInputContextFactory

为啥虚拟键盘不适用于 Qt 中的 QDialog 文本框?

如何在 QT 虚拟键盘上按下信号键并播放声音点击轨道?