- 类 QValidator#
该
QValidator类提供输入文本的验证。 更多...继承自:
QRegularExpressionValidator、QIntValidator、QDoubleValidator摘要#
方法#
def
__init__()def
locale()def
setLocale()
虚函数#
def
fixup()def
validate()
信号#
def
changed()
注意
本文档可能包含自动从C++转换为Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译中的问题,也可以通过在https:/bugreports.qt.io/projects/PYSIDE创建故障报告来告知我们。
详细描述#
该类自身是抽象的。有两个子类,分别是
QIntValidator和QDoubleValidator,提供了基本的数值范围检查,而QRegularExpressionValidator则提供使用自定义正则表达式的通用检查。如果内置验证器不足以满足需求,可以继承
QValidator类。该类有两个虚函数:validate()和fixup()。validate()必须由每个子类实现。它根据其参数是否有效(对子类定义的有效进行判断)返回Invalid(无效)、Intermediate(中间状态)或Acceptable(可接受)。这三个状态需要一些解释。一个
Invalid字符串是明确无效的。Intermediate状态不太明显:当字符串不完整(仍在编辑中)时,很难应用有效性的概念。QValidator将Intermediate定义为字符串属性,这种属性既不是明显的无效,也不能作为最终结果而被接受。Acceptable意味着字符串可以作为一个最终结果接受。人们可以说,任何在输入一个Acceptable字符串时的可能中间状态都是Intermediate。以下是一些示例
对于接受10到1000(包含10和1000)整数输入的行编辑器,42和123是
Acceptable,空字符串、5或1234是Intermediate,而“asdf”和10114是Invalid。对于接受URL的可编辑组合框,任何格式正确的URL都是
Acceptable的,例如“http://example.com/”,它处于Intermediate状态(可能是因为意外粘贴了尾随的逗号),空字符串也是Intermediate状态(用户可能会删除所有的文本以准备输入新的URL),而“http:///./”则是Invalid的。对于接受长度的微调框,“11cm”和“1in”是
Acceptable的,“11”和空字符串是Intermediate的,而“http://example.com”和“hour”则是Invalid的。
为能够修复某些用户错误的验证器提供了
fixup()方法。默认实现不执行任何操作。例如,QLineEdit会在用户按下Enter(或Return)键且内容当前无效时调用fixup()方法。这给了fixup()方法修复Invalid字符串,使其变为Acceptable的机会。验证器有一个区域设置,通过
setLocale()设置。通常用来解析本地化数据。例如,QIntValidator和QDoubleValidator使用它解析整数和双精度的本地化表示。QValidator通常与 QLineEdit、QSpinBox 和 QComboBox 一起使用。另请参阅
QIntValidatorQDoubleValidatorQRegularExpressionValidator行 编辑 示例- 类 State#
这个枚举类型定义了验证字符串可以存在的状态。
常量
描述
QValidator.Invalid
字符串是*明确无效的*。
QValidator.Intermediate
字符串是可能的可疑中间值。
QValidator.Acceptable
字符串作为最终结果*可接受*;也就是说它是有效的。
设置验证器。将
parent参数传递给QObject构造函数。- changed()#
当任何可能会影响字符串有效性的属性发生变化时,发出此信号。
- fixup(arg__1)#
- 参数:
arg__1 – str
- 返回类型:
QString
此函数尝试根据此验证器规则更改
input以使其有效。这不必导致一个有效的字符串:调用此函数的调用者必须在之后重新测试;默认情况下不执行任何操作。此函数的实现可以修改
input,即使它们没有产生有效的字符串。例如,ISBN验证器可能想要删除除了数字和“-”之外的所有字符,即使结果是有效的ISBN;姓氏验证器可能想要删除字符串开头和结尾的空白,即使结果是接受的姓氏之外。返回验证器的区域设置。默认情况下,区域设置初始化为QLocale()相同的区域设置。
另请参阅
setLocale()QLocale()设置用于验证器的(locale)。除非已经调用setLocale,否则验证器将使用与QLocale::setDefault()设置的默认区域设置相关联的区域设置。如果没有设置默认区域,则是操作系统的区域设置。
另请参阅
- 抽象 validate(arg__1, arg__2)#
- 参数:
arg__1 – str
arg__2 – int
- 返回类型:
PyObject
这个虚函数如果根据这个验证器的规则,输入无效,则返回
Invalid,如果很可能稍作编辑可以使输入接受,则返回Intermediate(例如,用户在允许输入介于10到99之间的整数的控制部件中输入“4”),如果输入有效,则返回Acceptable。如果需要,此函数可以更改
input和pos(光标位置)。