- 类 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 一起使用。另请参阅
QIntValidator
QDoubleValidator
QRegularExpressionValidator
行 编辑 示例
- 类 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
(光标位置)。