Qt VirtualKeyboard включение и отключение клавиш - PullRequest
0 голосов
/ 28 августа 2018

Я пишу приложение, которое использует Qt 5.6.3 и QtVirtualKeyboard, и мне нужно иметь возможность включать / отключать его ключи. Мне удалось сделать это вручную, отредактировав файлы макета, но мне нужно сделать это динамически, в зависимости от пользовательского ввода.

У меня есть InputPanel, который я использую в своем qml-файле, вот так

InputPanel {
    id: inputPanel
    visible: true
    y: parent.height - inputPanel.height
    anchors.left: parent.left
    anchors.right: parent.right
}

Keyboard with all keys enabled

Это клавиатура по умолчанию со всеми включенными клавишами.

QWERT disabled

А здесь Q / W / E / R / T отключены.

Как отключить такие ключи VirtualKeyboard, как в c ++ или qml?

1 Ответ

0 голосов
/ 29 августа 2018

На основании этого принятого ответа ( Скрыть ключ от виртуальной клавиатуры Qt ), я могу предложить этот, который вручную отключает клавишу «m»:

import QtQuick 2.11
import QtQuick.Controls 2.3
import QtQuick.VirtualKeyboard 2.1
import "content"

Item {
    width: 1280
    height: 720

    property var keyboardLayout: inputPanel.keyboard.layout

    function disableKey(parent, objectText) {
        var obj = null
        if (parent === null)
            return null
        var children = parent.children
        for (var i = 0; i < children.length; i++) {
            obj = children[i]
            if (obj.text === objectText && obj.toString().substring(0, 7) === "BaseKey") {
                obj.enabled = false
            }
            obj = disableKey(obj, objectText)
            if (obj)
                break
        }
        return obj
    }

    onKeyboardLayoutChanged: {
        if (keyboardLayout !== "") {
            disableKey(inputPanel.keyboard, 'm')
        }
    }

    InputPanel {
        id: inputPanel
        anchors.fill: parent
    }
}
...