ljhandlwt

白羽哀婉,不容于天空之湛蓝,亦不容于海之绀碧

pyqt4文档阅读(10):QValidator

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


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)


阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ljhandlwt/article/details/52345745
文章标签: qt pyqt QValidator
个人分类: qt
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

pyqt4文档阅读(10):QValidator

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭