qt - 粘贴文本时如何让 QT 验证器正常工作?
问题描述
我有一个 QT QRegExpValidator
(RegExpValidator
在 QML 中),它将我的文本输入限制为仅限字母数字内容。
但是,当用户将字符串粘贴到 myTextField
中时,有时这些字符串以换行符结尾,验证失败,因此字符串永远不会被粘贴。
我已经读过,实现该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(' ');
}
};
解决方案
似乎该fixup
方法没有在 a 的validate
方法中被调用QRegExpValidator
。为了让它工作,我必须validate
在调用父方法之前重新实现该方法并在那里调用 fixupvalidate
方法。
QValidator::State LoginValidator::validate(QString &input, int &pos) const
{
fixup(input);
return QRegExpValidator::validate(input, pos);
}
推荐阅读
- powerbi - 为什么 M 函数 List.Transform 在带有嵌入逗号的字符串周围放置双引号?
- python - Python Pandas 减去每一列并创建新列
- powershell - 在没有管理员权限的情况下更改注册表 Windows 10
- r - 拆分块数据并在 R 中获得最大/最小值
- scala - 强制案例对象的名称
- html - @media 屏幕不工作,怎么了?
- django - 静态 url 在常规页面 url 之后
- r - R中的反向分组条形图
- objective-c - NSRegularExpression enumerateMatchesInString 正确用法
- amazon-web-services - 如何使用aws服务对我的url执行get操作以获取数据