粘贴文本时如何使QT验证器正常工作?

时间:2019-04-10 17:21:46

标签: qt qml qt5 qvalidator

我有一个QT QRegExpValidator(在QML中为RegExpValidator),它将我的文本输入限制为仅字母数字内容。

但是,当用户将字符串粘贴到我的TextField中时,有时这些字符串会以换行符结尾,这会导致验证失败,因此永远不会粘贴该字符串。

我已经读到,实现fixup方法使您有机会清理字符串,以便它们与验证程序一起正常工作。但是,这在粘贴时似乎不起作用-字符串仍然不会粘贴。

如何使它按我想要的方式工作?

我的代码如下:

LoginValidator { id: alphaNumValidator; regExp: /(?:[0-9A-Za-z])+$/ }

LoginValidator实现如下:

class LoginValidator : public QRegExpValidator
{
    Q_OBJECT
public:

    virtual void fixup(QString &input) const override
    {
        input = input.simplified().remove(' ');
    }
};

1 个答案:

答案 0 :(得分:1)

似乎fixup的{​​{1}}方法中没有调用validate方法。为了使此工作正常进行,我必须重新实现QRegExpValidator方法并在那里调用fixup方法,然后再调用父validate方法。

validate