如何像 Qt Widgets 一样将正则表达式应用于 TextEdit?
How to apply regexp to TextEdit like in Qt Widgets?
有没有办法像在 QtWidgets 中那样将正则表达式(同时输入一些文本)应用于 TextEdit
QML 元素?
在 QtWidgets 中您需要创建 QRegExp
和 QValidator
,然后为 QRegExp
设置模式,使用模式创建 QValidator
最后调用 setValidator()
在 QLineEdit
上。
有没有办法在 QML 中实现类似的东西?或者唯一的解决方法是利用一些 JavaScript and/or C++ 代码?
如果您想添加文本验证,您应该从 TextEdit
类型切换到 TextInput
类型。后者有一个validator
属性。它从文档中读取:
Allows you to set a validator on the TextInput. When a validator is set the TextInput will only accept input which leaves the text property in an acceptable or intermediate state. The accepted signal will only be sent if the text is in an acceptable state when enter is pressed.
Currently supported validators are IntValidator, DoubleValidator and 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]+/ }
}
}
有没有办法像在 QtWidgets 中那样将正则表达式(同时输入一些文本)应用于 TextEdit
QML 元素?
在 QtWidgets 中您需要创建 QRegExp
和 QValidator
,然后为 QRegExp
设置模式,使用模式创建 QValidator
最后调用 setValidator()
在 QLineEdit
上。
有没有办法在 QML 中实现类似的东西?或者唯一的解决方法是利用一些 JavaScript and/or C++ 代码?
如果您想添加文本验证,您应该从 TextEdit
类型切换到 TextInput
类型。后者有一个validator
属性。它从文档中读取:
Allows you to set a validator on the TextInput. When a validator is set the TextInput will only accept input which leaves the text property in an acceptable or intermediate state. The accepted signal will only be sent if the text is in an acceptable state when enter is pressed.
Currently supported validators are IntValidator, DoubleValidator and 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]+/ }
}
}