2015-06-29 2 views
0

Есть ли способ применить regexp (при вводе некоторого текста) к TextEdit Элемент QML, как в QtWidgets?Как применить regexp к TextEdit, как в Qt Widgets?

В QtWidgets вам нужно создать QRegExp и QValidator, а затем установить шаблон для QRegExp, создать QValidator с шаблоном и, наконец, называют setValidator() на QLineEdit.

Есть ли способ реализовать что-то подобное в QML? Или единственный способ обходного пути - использовать код JavaScript и/или C++?

ответ

3

Для того, чтобы добавить проверку текста, необходимо переключить файл с TextEdit на TextInput. Последний имеет свойство validator. Он читает из документации:

Позволяет установить валидатор в TextInput. Когда установлен валидатор, TextInput будет принимать только вход, который оставляет свойство текста в допустимом или промежуточном состоянии. Принимаемый сигнал будет отправлен только в том случае, если текст находится в приемлемом состоянии при нажатии клавиши ввода.

В настоящее время поддерживаемые валидаторы являются IntValidator, DoubleValidator и RegExpValidator.

RegExpValidator обеспечивает regExp свойство, которое имеет место фактическое регулярное выражение будет применяться для ввода текста.

Вот минимальный пример, который принимает только цифры и a (один или более цифр/a - как верхнего и нижнего регистров):

import QtQuick 2.4 
import QtQuick.Window 2.2 
import QtQuick.Controls 1.3 

ApplicationWindow { 
    id: window 
    width: 200 
    height: 200 
    visible: true 

    TextInput { 
     focus: true 
     anchors.centerIn: parent 
     validator: RegExpValidator { regExp: /[0-9aA]+/ } 
    } 
} 
Смежные вопросы