有没有办法TextEdit
像在 QtWidgets 中一样将正则表达式(在输入一些文本时)应用于 QML 元素?
在 QtWidgets 中,您需要创建QRegExp
,QValidator
然后设置模式QRegExp
,使用模式创建一个,QValidator
最后调用setValidator()
。QLineEdit
有没有办法在 QML 中实现类似的东西?或者唯一的解决方法是利用一些 JavaScript 和/或 C++ 代码?
有没有办法TextEdit
像在 QtWidgets 中一样将正则表达式(在输入一些文本时)应用于 QML 元素?
在 QtWidgets 中,您需要创建QRegExp
,QValidator
然后设置模式QRegExp
,使用模式创建一个,QValidator
最后调用setValidator()
。QLineEdit
有没有办法在 QML 中实现类似的东西?或者唯一的解决方法是利用一些 JavaScript 和/或 C++ 代码?
如果你想添加文本验证,你应该切换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]+/ }
}
}