QValidator类

Qt 3.0.5

主页 | 所有的类 | 主要的类 | 注释的类 | 分组的类 | 函数

QValidator类参考

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

#include <qvalidator.h>

继承了QObject

QIntValidatorQDoubleValidatorQRegExpValidator继承。

所有成员函数的列表。

公有成员

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

详细描述

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

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

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

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

这三种状态需要一些解释。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、QSpinBoxQComboBox使用。

请参考杂项类


成员类型文档

QValidator::State

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

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

成员函数文档

QValidator::QValidator ( QObject * parent, const char * 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(光标位置)。

QIntValidatorQDoubleValidatorQRegExpValidator中被重新实现。


这个文件是Qt工具包一部分。 版权所有 © 1995-2002 Trolltech。保留所有权利。


Copyright © 2002 Trolltech Trademarks 译者:Cavendish
Qt 3.0.5版