2017-11-23 31 views
1

사용자가 시간을 입력 할 수있게 해주는 TextField을 가지고 있으며 유효성을 검사하기 위해 RegValidator를 사용했습니다. 현재, 사용자가 백 스페이스를 클릭하자마자 특정 위치를 "0"으로 채워야합니다. 코드는 다음과 같은 :QMF에서 시간 입력의 TextField 유효성 확인

TextField { 
    id:textField 
    text:"11:11:11" 
    width:200 
    height:80 
    font.pointSize: 15 
    color:"white" 
    inputMask: "99:99:99" 
    validator: RegExpValidator { regExp: /^([0-1\s]?[0-9\s]|2[0-3\s]):([0-5\s][0-9\s]):([0-5\s][0-9\s])$/} 
    horizontalAlignment: Text.AlignHCenter 
    verticalAlignment: Text.AlignVCenter 
    inputMethodHints: Qt.ImhDigitsOnly 
} 

답변

0

사용자가

그냥 백 스페이스 키를 치는 의미 백 스페이스

클릭? 그럼 이런 식으로 뭔가 될 것이다 : 순서

는 커서가 숫자 하나를 다시

TextField { 
    .. 
    Keys.onBackPressed: text = "00:00:00" 
} 

편집, 다음과 같은 일을 할 수 있습니다. 나는

TextField { 
    .. 
    Keys.onBackPressed: { 
     var index = cursorPosition 
     var char = text.charAt(index) 
     if(char != ":"){ 
      text = text.substr(0, index) + "0"+ text.substr(index); 
     } 

    } 
} 

http://doc.qt.io/qt-5/qml-qtquick-controls-textfield.html#cursorPosition-prop

+0

내가 텍스트를 설정하는 경우는 "0시 0분 0초는"그것은 모든 위치 "0을 대체하는 지표 중 일부는 잘못,하지만 당신은 아이디어를 얻을 어쩌면 그것을 테스트하지 않고 ". 내 질문은 커서가 2 위치에 있고 백 스페이스가 클릭되면 그 위치에 "0"을 추가해야하고 어떻게해야합니까? 그 이유는 모든 위치를 지울 때 TextField가 "::"이되도록 허용 할 수 없기 때문입니다. – pra7