У меня есть следующая виртуальная клавиатура, которая устанавливает значение y для flickable, чтобы не скрывать текст. переменная настроек содержит 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
}
}
}
Каким-то образом при первом щелчке в текстовом поле виртуальная клавиатура появляется, как и ожидалось, и сдвигается. я прячу клавиатуру и пробую снова не работает. Таким образом, виртуальная клавиатура появляется, но не изменяется.