Почему в TextFild(qml), если установлена маска, курсор не правильно меняет позицию?

В qml TextField если стоит inputMask -- курсор (при вводе текста) перемещается на одну позицию , а должен в зависимости от маски.
Эта проблема проявляется на андроид. На десктопе с физической клавиатурой поведение правильное
5e43c75c7b104170406978.gif
import QtQuick 2.14
import QtQuick.Window 2.14
import QtQuick.Controls 2.12

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")
    Item {
        anchors.fill: parent
        Column{
            spacing: 10

          anchors.horizontalCenter: parent.horizontalCenter
          anchors.top: parent.top
          anchors.topMargin: 20


            TextField{
                id:  text_field
               // inputMethodHints: Qt.ImhNoPredictiveText|Qt.ImhSensitiveData | Qt.ImhDigitsOnly
                inputMethodHints: Qt.ImhDigitsOnly
                inputMask: "+7(###)-###-####"
                onTextChanged: {
                    console.log("text changed")
                }

                Keys.onPressed: {
                    console.log("keys presed "+ event.key)
                    text_event.text= "keys presed "+ event.key


                }
                onFocusChanged: {
                    if(focus){
                        cursorPosition=0
                    }
                }
            }
            Text {
                text: text_field.text
            }
            Text {
                id: text_event

            }
        }
    }

}

Qt 5.14.1
  • Вопрос задан
  • 584 просмотра
Пригласить эксперта
Ответы на вопрос 1
@AlexanderIljin
У меня была немного другая проблема связанная с inputMask.
inputMask: ">NNNNNN-NNNNNN-NNNNNN-NNNNNN-NNNNNN-NNNNNN;#"

Если установить курсор на начало строки, то нажатия на виртуальной клавиатуре добавляли символы перед заполнителями.
Но мне помог такой inputMethodHints
inputMethodHints: Qt.ImhSensitiveData | Qt.ImhPreferUppercase | Qt.ImhNoPredictiveText
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы