返回介绍

QValidator类

发布于 2019-10-04 15:03:46 字数 2891 浏览 1712 评论 0 收藏 0

QValidator类提供了对输入文本的验证。 详情请见……

#include <qvalidator.h>

继承了QObject。

被QIntValidator、QDoubleValidator和QRegExpValidator继承。

所有成员函数的列表。

公有成员

  • QValidator ( QObject*parent, constchar*name = 0 )
  • ~QValidator ()
  • enum State { Invalid, Intermediate, Valid = Intermediate, Acceptable }
  • virtual State validate ( QString&input, int&pos ) const = 0
  • virtual void fixup ( QString&input ) const

详细描述

QValidator类提供了对输入文本的验证。

这个类本身是抽象类。两个子类QIntValidator和QDoubleValidator提供了基本的数字范围检查,并且QRegExpValidator提供了一个使用自定义正则表达式的普通检查。

如果内置的验证器还不够的话,你可以继承QValidator。这个类有两个虚函数:validate()和fixup()。

validate()必须被每个子类重新实现。它根据参数是否有效(子类中来定义这个有效)返回Invalid、Intermediate或Acceptable。

这三种状态需要一些解释。Invalid是指字符串明显地无效。Intermediate是不太明显的——当字符串在不完整的时候(还在被编辑),这个有效的概念是要小心对待的。QValidator把Intermediate定义为一个字符串的属性,既不是明显地无效也不是作为最终结果可以接受的。Acceptable意味着作为最终结果这个字符串是可以接受的。在一个Acceptable字符串被输入的过程中任何似是而非的中间状态都是Intermediate。

这里是一些实例:

  • 对于一个接受从0到999的整数的行编辑,包括边界,42和666都是Acceptable,空字符串和1114是Intermediate并且asdf是Invalid。

  • 对于一个用来接受URL的可以编辑的组合框,任何格式正确的URL都是Acceptable,“http://www.trolltech.com/,”是Intermediate(它可能是被剪切过来的,所以后面有一个逗号),空字符串是有效的(用户可以可以选择和删除所有文本来准备输入一个新的URL)并且“http:///./”是Invalid。

  • 对于一个接受长度的微调框,“11cm”和“1in”是Acceptable,“11”和空字符串是Intermediate并且“http://www.trolltech.com”和“hour”是Invalid。

fixup()为提供了可以修改一些用户错误的验证器。默认实现是什么也不做。例如QLineEdit,如果用户按下回车键并且内容并不有效,这种情况下fixup()可以做些事情了。这样就允许一些Invalid字符串也可以被变为Acceptable。

QValidator通常被QLineEdit、QSpinBox和QComboBox使用。

请参考杂项类。


成员类型文档

QValidator::State

这个枚举类型定义了一个被验证的字符串所存在的状态。现在有三个状态:

  • QValidator::Invalid - 这个字符串是明显地有效。
  • QValidator::Intermediate - 这个字符串在被输入的过程中是似是而非的中间状态。
  • QValidator::Acceptable - 这个字符串作为最终结果是可以接受的,也就是说是有效的。

成员函数文档

QValidator::QValidator ( QObject*parent, constchar*name = 0 )

设置被这个验证器使用的内部数据结构。在这个时候还没有人任何数据。parentname参数被传递给QObject的构造函数。

QValidator::~QValidator ()

销毁这个验证器,释放任何存储和其它被使用的资源。

void QValidator::fixup ( QString&input ) const [虚]

这个函数会根据这个验证器的规则试图改变input来使之有效。它不需要结果是有效的字符串——这个函数的调用者必须在调用之后重新测试,默认是什么也不做。

这个函数的重新实现要改变input,尽管它们可能不生成有效字符串。例如,一个ISBN验证器也许想删除除了数字和“-”之外的任何字符,尽管结果不是一个有效的ISBN,一个姓氏验证器也许想要删除字符串开始和结尾的空白符号,尽管结果字符串并不存在于被接受的姓氏列表中。

State QValidator::validate ( QString&input, int&pos ) const [纯 虚]

如果根据这个验证器的规则,input是有效的,这个纯虚函数返回Invalid,如果看起来再编辑一下就会使结果变为可以接受(例如用户向一个接受10到99的窗口部件中输入了“4”),那么返回Intermediate,如果输入是有效的,就返回Acceptable。

如果需要的话,这个函数可以改变inputpos(光标位置)。

在QIntValidator、QDoubleValidator和QRegExpValidator中被重新实现。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文