主页 | 所有的类 | 主要的类 | 注释的类 | 分组的类 | 函数 |
QValidator类参考
QValidator类提供了对输入文本的验证。 详情请见……
#include <qvalidator.h>
继承了QObject。
被QIntValidator、QDoubleValidator和QRegExpValidator继承。
公有成员
- QValidator ( QObject * parent, const char * 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, const char * name = 0 )
设置被这个验证器使用的内部数据结构。在这个时候还没有人任何数据。parent和name参数被传递给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。
如果需要的话,这个函数可以改变input和pos(光标位置)。
在QIntValidator、QDoubleValidator和QRegExpValidator中被重新实现。
这个文件是Qt工具包一部分。 版权所有 © 1995-2002 Trolltech。保留所有权利。
Copyright © 2002 Trolltech | Trademarks | 译者:Cavendish | Qt 3.0.5版
|