PySide6.QtGui.QValidator

class QValidator

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

PySide6.QtGui.QValidator 的继承图

继承者: QRegularExpressionValidator, QIntValidator, QDoubleValidator

概要

方法

虚拟方法

信号

注意

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

详细描述

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

如果内置的验证器不够用,你可以子类化 QValidator。该类有两个虚函数:validate()fixup()

validate() 必须由每个子类实现。它根据其参数是否有效(对于子类的有效定义)返回 InvalidIntermediateAcceptable

这三种状态需要一些解释。Invalid 字符串是明显无效的。Intermediate 则不那么明显:当字符串不完整(仍在编辑中)时,有效性的概念很难应用。QValidatorIntermediate 定义为既不是明显无效也不是最终结果可接受的字符串属性。Acceptable 意味着该字符串作为最终结果是可以接受的。可以说,任何在输入 Acceptable 字符串时可能出现的中间状态字符串都是 Intermediate

以下是一些示例:

fixup() 是为可以修复一些用户错误的验证器提供的。默认实现不执行任何操作。例如,如果用户按下 Enter(或 Return)并且当前内容无效,QLineEdit 将调用 fixup()。这允许 fixup() 函数有机会执行一些魔法,使 Invalid 字符串变为 Acceptable

验证器有一个区域设置,通过setLocale()设置。它通常用于解析本地化数据。例如,QIntValidatorQDoubleValidator使用它来解析整数和双精度数的本地化表示。

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

class State

此枚举类型定义了已验证字符串可能存在的状态。

常量

描述

QValidator.Invalid

该字符串明显无效。

QValidator.Intermediate

该字符串是一个合理的中间值。

QValidator.Acceptable

字符串可以作为最终结果接受;即它是有效的。

__init__([parent=None])
Parameters:

父对象QObject

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

changed()

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

fixup(input)
Parameters:

输入 – str

Return type:

QString

此函数尝试根据此验证器的规则将input更改为有效。它不一定会产生有效的字符串:此函数的调用者之后必须重新测试;默认情况下不执行任何操作。

此函数的重新实现可能会更改input,即使它们不生成有效的字符串。例如,ISBN验证器可能希望删除除数字和“-”之外的每个字符,即使结果仍然不是有效的ISBN;姓氏验证器可能希望从字符串的开头和结尾删除空格,即使生成的字符串不在接受的姓氏列表中。

locale()
Return type:

QLocale

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

另请参阅

setLocale() QLocale()

setLocale(locale)
Parameters:

localeQLocale

设置将用于验证器的locale。除非调用了setLocale,否则验证器将使用通过QLocale::setDefault()设置的默认区域设置。如果未设置默认区域设置,则使用操作系统的区域设置。

另请参阅

locale() setDefault()

abstract validate(input, pos)
Parameters:
  • input – str

  • pos – 整数

Return type:

PyObject

此虚拟函数根据此验证器的规则,如果input无效,则返回Invalid;如果稍微编辑一下可能使输入可接受(例如,用户在接受10到99之间整数的小部件中输入“4”),则返回Intermediate;如果输入有效,则返回Acceptable

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