1

有没有办法TextEdit像在 QtWidgets 中一样将正则表达式(在输入一些文本时)应用于 QML 元素?

在 QtWidgets 中,您需要创建QRegExpQValidator然后设置模式QRegExp,使用模式创建一个,QValidator最后调用setValidator()QLineEdit

有没有办法在 QML 中实现类似的东西?或者唯一的解决方法是利用一些 JavaScript 和/或 C++ 代码?

4

1 回答 1

3

如果你想添加文本验证,你应该切换TextEditTextInput类型。后者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]+/ }
    }
}
于 2015-06-29T15:41:55.267 回答