如何在Qt Widgets中将regexp应用于TextEdit?

时间:2015-06-29 14:22:10

标签: regex qt qml qtquick2 qtquickcontrols

有没有办法将regexp(在输入一些文本时)应用到QtWidgets中的TextEdit QML元素?

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

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

1 个答案:

答案 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]+/ }
    }
}