如何像 Qt Widgets 一样将正则表达式应用于 TextEdit?

How to apply regexp to TextEdit like in Qt Widgets?

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

在 QtWidgets 中您需要创建 QRegExpQValidator,然后为 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]+/ }
    }
}