关闭

pyqt4文档阅读(10):QValidator

标签: qtpyqtQValidator
418人阅读 评论(0) 收藏 举报
分类:

本系列文章长期更新修改.


QValidator,验证器,用于输入时的合法性检查,包括QLineEdit等.

QValidator是一个抽象对象,Qt实现了它的3个子类QIntValidator,QDoubleValidator和QRegExpValidator.


属性:

Types

  • enum State { Invalid, Intermediate, Acceptable }

Methods

  • __init__ (self, QObject parent)
  • fixup (self, QString)
  • QLocale locale (self)
  • setLocale (self, QLocale locale)
  • (State, int) validate (self, QString, int)


详细分析:


1.工作方式

QValidator验证器有两种工作方式.

第一种是显式调用它的判断函数validate(),它会返回3种状态.

枚举量 含义
QValidator.Invalid 0 错误
QValidator.Intermediate 1 错误,但错误可能能更正
QValidator.Acceptable 2 正确
其中最难理解的是Intermediate,我们可以通过下面第二种工作方式辅助理解.

第二种是Qt控件自动调用验证函数,这些控件包括QLineEditQComboBox,它们都有一对验证器相关的函数.

QSpinBox也有相关的函数,但不直接使用QValidator.

  • QValidator validator (self)
  • setValidator (self, QValidator)

当不设置的时候,这些控件默认输入都能通过这个验证(可能还有inputMask验证).

设置了之后,当有键盘输入或者按回车键的时候,这些控件就会调用QValidator的validate(),根据结果它会做不同的动作.

结果 键盘输入 回车键
QValidator.Invalid 输入无效
(无动作)
会调用fixup()修正,再调用一次validate()
如果修正后变成Acceptable,字符串会被修正后的替换,并调整光标
QValidator.Intermediate 输入有效
光标调整
会调用fixup()修正,再调用一次validate()
如果修正后变成Acceptable,字符串会被修正后的替换,并调整光标
QValidator.Acceptable 输入有效
光标调整
光标调整

2.validate()函数

validate()函数是QValidator里最重要的函数,也是每个继承QValidator都需要重新实现的纯虚函数.

它接受两个参数,分别是要检验的字符串,和一个光标当前位置pos.对同一个字符串来说,不同的pos参数一般不会影响结果.

它的返回值是一个二元组,分别是结果状态,和pos参数.在上面的表里有"光标调整"字样的情况,控件会把光标位置调整到pos处.

一般来说,输入的pos和输出的pos是一样的.

  • (State, int) validate (self, QString, int)

3.fixup()函数

fixup()函数的意义在工作方式那里已经说过,它只在控件验证那里被Qt调用,在直接验证的方式时Qt不会自动调用它.

它接受一个字符串参数,并且这个参数也是输出参数,fixup()里会直接修改这个参数,并通过这个参数返回,因此它没有返回值.

  • fixup (self, QString)

4.待续

QLocale locale (self)
setLocale (self, QLocale locale)


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:53861次
    • 积分:1774
    • 等级:
    • 排名:千里之外
    • 原创:126篇
    • 转载:0篇
    • 译文:0篇
    • 评论:16条
    文章分类
    最新评论