虚拟键盘隐藏文本QML

时间:2018-07-24 06:50:15

标签: qt qml virtual-keyboard

我有以下虚拟键盘,该键盘将可弹奏的y设置为不隐藏文本的值。设置变量包含下面的IntSettingsRow。

//Administration.qml
K_VirtualKeyBoard{
    id: keyboard
    z:100
    onVisibleChanged: {
        if(visible){
            if(settings.posY - keyboard.height > 0){
                flickable.contentY = settings.posY - keyboard.height + 20
            }
            else{
                flickable.contentY = 0
            }
        }
        if(!visible){
            settings.settingsRow.textField.focus = false
            flickable.contentY = 0
        }                      
    }
}

我有一个IntSettingsRow,它是一个文本字段,可以插入一些文本。

//GeneralSettings.qml
    IntSettingsRow{
        id: touchDeactivationTimedTime
        height: itemHeight
        anchors.left: parent.left
        anchors.right: parent.right
        anchors.topMargin: 8
        validator:  IntValidator{bottom: 10; top: 300}
        title: qsTr("deactivate time")+":"
        value: currentSettings?currentSettings.deactivationTime:0
        onValueChanged:{
            var val = parseInt(value)
            if (!isNaN(val)){
                currentSettings?currentSettings.deactivationTime = val:{}
            }
        }
        onEditingFinished: {
            if (value === "") textField.text = currentSettings.deactivationTime
        }

        onFocusChanged: {
            settingsRow = touchDeactivationTimedTime
            if(!textField.focus){
                editingFinished()
                posY = 0
            }else{
                posY = mapToItem(parent, x, y).y
            }
        }
    }

以某种方式,第一次单击“文本”字段时,虚拟键盘会按预期方式弹出,并且轻弹即可移动。我隐藏了键盘,然后重试它不起作用。因此,虚拟键盘会弹出,但轻弹不会改变。

1 个答案:

答案 0 :(得分:0)

我找到了一个解决方案,可以直接在我的introwsrow中从onfocus上编辑flickable。现在可以了