Qt 5.9 qml 使用自带虚拟键盘

20 篇文章 16 订阅
4 篇文章 0 订阅

  Qt有自己的虚拟键盘的插件,使用起来也非常方便,这里介绍在QtQuick中的使用方法。</>

键盘的集成方式

虚拟键盘的集成有两种方式:

  1. 键盘出现在桌面,即系统的屏幕上,键盘的宽度等于屏幕的宽度,不依赖于app的宽度。
  2. 键盘嵌入到我们的app中去,键盘的宽度等于我们app的宽度。

加载插件

  加载虚拟键盘的插件我们需要设置QT_IM_MODULE环境变量。有两种方法设置:

 $ QT_IM_MODULE=qtvirtualkeyboard myapp

比如:
在这里插入图片描述
或者在main.cpp中设置:

 qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard"));

<font face =黑体" size= 4> 注意:

使用这种方式必须在QGuiApplication app(argc, argv)之前:

int main(int argc, char *argv[])
{
    qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard"));
    QGuiApplication app(argc, argv);
    QQmlApplicationEngine engine;
    engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
    if (engine.rootObjects().isEmpty())
        return -1;

    return app.exec();
}

第一种集成方式

只需要导入键盘模块:

import QtQuick 2.6
import QtQuick.Window 2.2
import QtQuick.Controls 2.2
import QtQuick.VirtualKeyboard 2.2

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    TextField {
        anchors.top: parent.top
        anchors.horizontalCenter: parent.horizontalCenter
    }
}

当我们点击TextField的输入框的时候就会自动调出键盘:
这里写图片描述

第二种集成方式

需要创建一个InputPanel控件:

import QtQuick 2.6
import QtQuick.Window 2.2
import QtQuick.Controls 2.2
import QtQuick.VirtualKeyboard 2.2

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    TextField {
        anchors.top: parent.top
        anchors.horizontalCenter: parent.horizontalCenter
        onPressed: {
            vkb.visible = true; //当选择输入框的时候才显示键盘
        }
    }

    InputPanel {
        id: vkb
        visible: false
        anchors.right: parent.right
        anchors.left: parent.left
        anchors.bottom: parent.bottom
        //这种集成方式下点击隐藏键盘的按钮是没有效果的,
        //只会改变active,因此我们自己处理一下
        onActiveChanged: {
            if(!active) { visible = false; }
        }
    }
}

这里写图片描述

这种看着就比较舒服一些。

我们还可以自己更改虚拟键盘的源码,更改它的宽度高度,按键大小,可移动等等然后编译,有时间再写一篇吧。。。</>

  • 10
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 46
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 46
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值