PySide6.QtGui.QValidator¶
- class 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之间整数的行编辑框,42和123是
可接受的,空字符串、5或1234是中间的,而“asdf”和10114是无效的。对于接受URL的可编辑组合框,任何格式正确的URL都是
可接受的,“http://example.com/”是中间的(可能是剪切和粘贴操作意外地在末尾带入了逗号),空字符串是中间的(用户可能选择并删除所有文本以准备输入新的URL),而“http:///./”是无效的。对于接受长度的微调框,“11cm”和“1in”是
可接受的,“11”和空字符串是中间的,而“http://example.com”和“hour”是无效的。
fixup()是为可以修复一些用户错误的验证器提供的。默认实现不执行任何操作。例如,如果用户按下 Enter(或 Return)并且当前内容无效,QLineEdit 将调用fixup()。这允许fixup()函数有机会执行一些魔法,使Invalid字符串变为Acceptable。验证器有一个区域设置,通过
setLocale()设置。它通常用于解析本地化数据。例如,QIntValidator和QDoubleValidator使用它来解析整数和双精度数的本地化表示。QValidator通常与 QLineEdit、QSpinBox 和 QComboBox 一起使用。另请参阅
QIntValidatorQDoubleValidatorQRegularExpressionValidatorLine Edits Example- class State¶
此枚举类型定义了已验证字符串可能存在的状态。
常量
描述
QValidator.Invalid
该字符串明显无效。
QValidator.Intermediate
该字符串是一个合理的中间值。
QValidator.Acceptable
字符串可以作为最终结果接受;即它是有效的。
设置验证器。
parent参数传递给 QObject 构造函数。- changed()¶
当可能影响字符串有效性的任何属性发生变化时,会发出此信号。
- fixup(input)¶
- Parameters:
输入 – str
- Return type:
QString
此函数尝试根据此验证器的规则将
input更改为有效。它不一定会产生有效的字符串:此函数的调用者之后必须重新测试;默认情况下不执行任何操作。此函数的重新实现可能会更改
input,即使它们不生成有效的字符串。例如,ISBN验证器可能希望删除除数字和“-”之外的每个字符,即使结果仍然不是有效的ISBN;姓氏验证器可能希望从字符串的开头和结尾删除空格,即使生成的字符串不在接受的姓氏列表中。返回验证器的区域设置。默认情况下,区域设置初始化为与QLocale()相同。
另请参阅
setLocale()QLocale()设置将用于验证器的
locale。除非调用了setLocale,否则验证器将使用通过QLocale::setDefault()设置的默认区域设置。如果未设置默认区域设置,则使用操作系统的区域设置。另请参阅
- abstract validate(input, pos)¶
- Parameters:
input – str
pos – 整数
- Return type:
PyObject
此虚拟函数根据此验证器的规则,如果
input无效,则返回Invalid;如果稍微编辑一下可能使输入可接受(例如,用户在接受10到99之间整数的小部件中输入“4”),则返回Intermediate;如果输入有效,则返回Acceptable。如果需要,该函数可以更改
input和pos(光标位置)。