c++ - Qt VirtualKeyboard 启用和禁用键

标签 c++ qt qml qtvirtualkeyboard

我正在编写一个使用 Qt 5.6.3 和 QtVirtualKeyboard 的应用程序,我需要能够启用/禁用它的键。我设法通过手动编辑布局文件来做到这一点,但我需要根据用户输入动态地进行。

我在我的 qml 文件中使用了 InputPanel

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 被禁用。

如何在 c++ 或 qml 中禁用虚拟键盘键?

最佳答案

基于这个被接受的答案(Hide key from Qt Virtual keyboard),我可以提出这个手动禁用“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
    }
}

关于c++ - Qt VirtualKeyboard 启用和禁用键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52058978/

相关文章:

c++ - JOURNALRECORDPROC 确定按下的键

c++ - 在窗口中显示任何内容之前和抛光窗口之后无法进行介绍

android - 使用 qt-android 获取通知

c++ - QML无框窗支持aero snap

qt - QML:等到动画完成

C++ - 在需要 Iterator 类型的 vector (或其他容器)构造函数中使用数组/指针。这怎么可能?

c++ - pcap 函数出现未解析的外部符号 (LNK 2001) 错误

c++ - C++中数组的大小是否灵活?

c++ - Qt - 从基类继承类

qml - Flickable + 属性别名内容