1. 程式人生 > >Qt 5.9 qml 使用自帶虛擬鍵盤

Qt 5.9 qml 使用自帶虛擬鍵盤

  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; }
        }
    }
}

這裡寫圖片描述

這種看著就比較舒服一些。

我們還可以自己更改虛擬鍵盤的原始碼,更改它的寬度高度,按鍵大小,可移動等等然後編譯,有時間再寫一篇吧。。。</>