Qt QML使用虚拟键盘的示例代码

 更新时间:2024年01月04日 10:36:38   作者:信必诺  
这篇文章主要为大家详细介绍了Qt QML使用虚拟键盘的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下

示例效果

使用"虚拟键盘"注意 (例子的Qt版本:5.12.4)

注意一:

/* 必须在main.cpp开始处加入如下代码,否则无法使用"虚拟键盘" */
qputenv(“QT_IM_MODULE”,QByteArray(“qtvirtualkeyboard”));

注意二:

键盘大小是根据宽度自动计算的,所以,应用程序应该只设置InputPanel 的宽度和y 坐标,不能设置高度。

源码

main.cpp

#include <QGuiApplication>
#include <QQmlApplicationEngine>

int main(int argc, char *argv[])
{
    QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);

    // 必须加入否则无法使用"虚拟键盘"
    qputenv("QT_IM_MODULE",QByteArray("qtvirtualkeyboard"));

    QGuiApplication app(argc, argv);

    QQmlApplicationEngine engine;
    const QUrl url(QStringLiteral("qrc:/main.qml"));
    QObject::connect(&engine, &QQmlApplicationEngine::objectCreated,
                     &app, [url](QObject *obj, const QUrl &objUrl) {
        if (!obj && url == objUrl)
            QCoreApplication::exit(-1);
    }, Qt::QueuedConnection);
    engine.load(url);

    return app.exec();
}

main.qml

import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Layouts 1.12
import QtQuick.Controls 2.5

import QtQuick.VirtualKeyboard 2.2
import QtQuick.VirtualKeyboard.Settings 2.2

Window
{
    id: root
    visible: true
    width: 800
    height: 600
    title: qsTr("Hello World")

    ColumnLayout
    {
        anchors.top: parent.top
        anchors.topMargin: root.height * 0.2
        anchors.horizontalCenter: parent.horizontalCenter
        spacing: 25

        RowLayout
        {
            spacing: 25

            Text
            {
                text: qsTr("用户名:")
                font.family: "微软雅黑"
                font.pixelSize: 20
            }
            TextField
            {
                placeholderText: "输入用户名.."
                font.family: "微软雅黑"
                font.pixelSize: 16
                Layout.preferredWidth: root.width * 0.25

                background: Rectangle
                {
                    radius: 4
                    border.color: parent.focus  ? "#498ff8" : "#C4DBFC"
                }
            }
        }

        RowLayout
        {
            spacing: 25

            Text
            {
                text: qsTr("密   码:")
                font.family: "微软雅黑"
                font.pixelSize: 20
            }
            TextField
            {
                placeholderText: "输入密码.."
                font.family: "微软雅黑"
                font.pixelSize: 16
                Layout.preferredWidth: root.width * 0.25

                background: Rectangle
                {
                    radius: 4
                    border.color: parent.focus  ? "#498ff8" : "#C4DBFC"
                }
            }
        }
    }

    InputPanel
    {
        id: inputPannelID
        z: 99
        y: root.height      // 默认让其处于窗口最下方,貌似隐藏一样
        width: root.width
        visible: true       // 一直显示

        states: State 
        {
            name: "visible"
            when: inputPannelID.active
            PropertyChanges 
            {
                target: inputPannelID
                y: root.height-inputPannelID.height
            }
        }
        transitions: Transition 
        {
            from: ""
            to: "visible"
            reversible: true
            ParallelAnimation 
            {
                NumberAnimation 
                {
                    properties: "y"
                    duration: 250
                    easing.type: Easing.InOutQuad
                }
            }
        }


        Component.onCompleted:
        {
            VirtualKeyboardSettings.styleName = "retro"                         // 复古样式
            VirtualKeyboardSettings.wordCandidateList.alwaysVisible = true
            VirtualKeyboardSettings.activeLocales = ["en_US","zh_CN","ja_JP"]   // 英语、中文、日语 (若不设置,则语言就有很多种)
        }
    }
}

以上就是Qt QML使用虚拟键盘的示例代码的详细内容,更多关于Qt QML虚拟键盘的资料请关注脚本之家其它相关文章!

相关文章

  • C语言二分查找图文详解

    C语言二分查找图文详解

    折半查找法也叫做二分查找,顾名思义就是把数据分成两半,再判断所查找的key在哪一半中,再重复上述步骤知道找到目标key,这篇文章主要给大家介绍了关于C语言二分查找的相关资料,需要的朋友可以参考下
    2023-04-04
  • C语言中字符串的内存地址操作的相关函数简介

    C语言中字符串的内存地址操作的相关函数简介

    这篇文章主要介绍了C语言中字符串的内存地址操作的相关函数,包括bcopy()函数和bzero()函数以及bcmp()函数,需要的朋友可以参考下
    2015-08-08
  • MFC列表控件CListCtrl使用方法示范

    MFC列表控件CListCtrl使用方法示范

    这篇文章主要介绍了MFC列表控件CListCtrl使用方法示范,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • Recommended C Style and Coding Standards中文翻译版

    Recommended C Style and Coding Standards中文翻译版

    本文翻译自Recommended C Style and Coding Standards(C语言编码风格和标准),需要的朋友可以参考下
    2014-04-04
  • C++中的操作符重载详细解析

    C++中的操作符重载详细解析

    运算符重载后不能改变运算符的操作对象(操作数)的个数;如:"+"是实现两个操作数的运算符,重载后仍然为双目运算符
    2013-09-09
  • C++数据结构的队列详解

    C++数据结构的队列详解

    这篇文章主要为大家介绍了C++数据结构的队列,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-11-11
  • VC使用TerminateProcess结束进程实例

    VC使用TerminateProcess结束进程实例

    这篇文章主要介绍了VC使用TerminateProcess结束进程的方法,实例演示了TerminateProcess结束进程的具体实现过程,在进行VC应用程序开发时非常具有实用价值,需要的朋友可以参考下
    2014-10-10
  • C++实现企业职工工资管理系统

    C++实现企业职工工资管理系统

    这篇文章主要为大家详细介绍了C++实现企业职工工资管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • C++中的构造函数详解

    C++中的构造函数详解

    这篇文章主要介绍了C++ 中构造函数的实例详解的相关资料,希望通过本文能帮助到大家,让大家理解掌握这部分内容,需要的朋友可以参考下
    2021-09-09
  • C语言编写实现学生管理系统

    C语言编写实现学生管理系统

    这篇文章主要为大家详细介绍了C语言编写实现学生管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07

最新评论