有没有办法将regexp(在输入一些文本时)应用到QtWidgets中的TextEdit
QML元素?
在QtWidgets中,您需要创建QRegExp
和QValidator
,然后为QRegExp
设置模式,使用模式创建QValidator
,最后调用setValidator()
QLineEdit
。
有没有办法在QML中实现类似的东西?或者唯一的方法是解决方法是利用一些JavaScript和/或C ++代码吗?
答案 0 :(得分:3)
如果您想添加文字验证,则应从TextEdit
切换为TextInput
类型。后者具有validator
属性。它从文档中读取:
允许您在TextInput上设置验证器。设置验证程序时,TextInput将仅接受使text属性处于可接受或中间状态的输入。只有当按下输入时文本处于可接受状态时,才会发送接受的信号。
目前支持的验证器是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]+/ }
}
}