4

有没有办法在不使用自定义布局的情况下从虚拟键盘隐藏语言选择键?

在此处输入图像描述

4

3 回答 3

3

我能够通过解决方法隐藏语言键:

    property var keyboardLayout: inputPanel.keyboard.layout


    function findChildByProperty(parent, propertyName, propertyValue, compareCb) {
        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.hasOwnProperty(propertyName)) {
                if (compareCb !== null) {
                    if (compareCb(obj[propertyName], propertyValue))
                        break
                } else if (obj[propertyName] === propertyValue) {
                    break
                }
            }
            obj = findChildByProperty(obj, propertyName, propertyValue, compareCb)
            if (obj)
                break
        }
        return obj
    }



    onKeyboardLayoutChanged: {
        if(keyboardLayout!=""){
            var ChangeLanguageKey= findChildByProperty(inputPanel.keyboard, "objectName", "changeLanguageKey", null)
            if(ChangeLanguageKey){
                ChangeLanguageKey.visible=false
            }
        }
    }


    InputPanel {
        id: inputPanel
        z: 99
        y: parent.height
        anchors.left: parent.left
        anchors.right: parent.right




        states: State {
            name: "visible"

            when: inputPanel.active
            PropertyChanges {
                target: inputPanel
                y: parent.height - inputPanel.height
            }
        }
        transitions: Transition {
            from: ""
            to: "visible"
            reversible: true
            ParallelAnimation {
                NumberAnimation {
                    properties: "y"
                    duration: 400
                    easing.type: Easing.InOutBack
                }
            }
        }





        CustomComponents.AutoScroller {

            id:autoscroller

            panelY: inputPanel.y
        }


    }

在此处输入图像描述

这仅适用于使用“changeLanguageKey”定义对象名称属性的版本 5.9,对于以前的版本,请在源代码中设置该属性并重新编译。

于 2017-03-16T13:55:27.097 回答
1

不,不是不使用自定义布局。

不过,您始终可以修改键盘附带的布局。

于 2017-03-16T13:35:38.990 回答
1

我可以用这个技巧隐藏 hideKeyboard 键。我基本上试图获取表情符号键的引用,从而能够禁用下一个键,即 hideKeyboard 键。

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") {
           console.log("Disabling symbols. " + obj.text)
           obj.enabled = false
       }
       else if(obj.displayText === "HWR"){
            console.log("Disabling Handwriting mode button." + obj.displayText + " " + objectText)
            obj.visible = false
       }          
       else if(obj.text === ":-)" && obj.toString().substring(0, 7) === "BaseKey"){
           console.log("Disabling hidekeyboard key." + obj.text)
           children[i+1].visible = false
       } 
   obj = disableKey(obj, objectText)
       if (obj)
           break
   }
   return obj
}
于 2021-01-22T16:24:16.533 回答