QValidator#

QValidator类提供输入文本的验证。 更多...

Inheritance diagram of PySide6.QtGui.QValidator

继承自: QRegularExpressionValidatorQIntValidatorQDoubleValidator

摘要#

方法#

虚函数#

信号#

注意

本文档可能包含自动从C++转换为Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译中的问题,也可以通过在https:/bugreports.qt.io/projects/PYSIDE创建故障报告来告知我们。

详细描述#

该类自身是抽象的。有两个子类,分别是QIntValidatorQDoubleValidator,提供了基本的数值范围检查,而QRegularExpressionValidator则提供使用自定义正则表达式的通用检查。

如果内置验证器不足以满足需求,可以继承QValidator类。该类有两个虚函数:validate()fixup()

validate()必须由每个子类实现。它根据其参数是否有效(对子类定义的有效进行判断)返回Invalid(无效)、Intermediate(中间状态)或Acceptable(可接受)。

这三个状态需要一些解释。一个Invalid字符串是明确无效的。Intermediate状态不太明显:当字符串不完整(仍在编辑中)时,很难应用有效性的概念。QValidatorIntermediate定义为字符串属性,这种属性既不是明显的无效,也不能作为最终结果而被接受。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() 设置。通常用来解析本地化数据。例如,QIntValidatorQDoubleValidator 使用它解析整数和双精度的本地化表示。

QValidator 通常与 QLineEdit、QSpinBox 和 QComboBox 一起使用。

State#

这个枚举类型定义了验证字符串可以存在的状态。

常量

描述

QValidator.Invalid

字符串是*明确无效的*。

QValidator.Intermediate

字符串是可能的可疑中间值。

QValidator.Acceptable

字符串作为最终结果*可接受*;也就是说它是有效的。

__init__([parent=None])#
参数:

parentQObject

设置验证器。将parent参数传递给QObject构造函数。

changed()#

当任何可能会影响字符串有效性的属性发生变化时,发出此信号。

fixup(arg__1)#
参数:

arg__1 – str

返回类型:

QString

此函数尝试根据此验证器规则更改input以使其有效。这不必导致一个有效的字符串:调用此函数的调用者必须在之后重新测试;默认情况下不执行任何操作。

此函数的实现可以修改input,即使它们没有产生有效的字符串。例如,ISBN验证器可能想要删除除了数字和“-”之外的所有字符,即使结果是有效的ISBN;姓氏验证器可能想要删除字符串开头和结尾的空白,即使结果是接受的姓氏之外。

locale()#
返回类型:

QLocale

返回验证器的区域设置。默认情况下,区域设置初始化为QLocale()相同的区域设置。

另请参阅

setLocale() QLocale()

setLocale(locale)#
参数:

localeQLocale

设置用于验证器的(locale)。除非已经调用setLocale,否则验证器将使用与QLocale::setDefault()设置的默认区域设置相关联的区域设置。如果没有设置默认区域,则是操作系统的区域设置。

另请参阅

locale() setDefault()

抽象 validate(arg__1, arg__2)#
参数:
  • arg__1 – str

  • arg__2 – int

返回类型:

PyObject

这个虚函数如果根据这个验证器的规则,输入无效,则返回Invalid,如果很可能稍作编辑可以使输入接受,则返回Intermediate(例如,用户在允许输入介于10到99之间的整数的控制部件中输入“4”),如果输入有效,则返回Acceptable

如果需要,此函数可以更改inputpos(光标位置)。