pyqt4文档阅读(10):QValidator

原创 2016年10月01日 18:13:39

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


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)


版权声明:本文为博主原创文章,未经博主允许不得转载。

Qt学习:正则表达式 - QRegExp

用正则表达式验证文本有效性 你可以使用QRegExp::exactMatch来判断一个字符串是否符合一个pattern。 void testRegexMatch() { QString pat...
  • u013007900
  • u013007900
  • 2015年03月06日 15:51
  • 1528

PyQt4官方手册翻译-01

PyQt4 菜单栏和工具栏 布局
  • MieAn100
  • MieAn100
  • 2015年06月25日 16:42
  • 1345

Qt——正则表达式

源地址:http://www.cnblogs.com/hellovenus/p/4984751.html 在项目中经常会遇到对字符串进行操作的情况,我们可以直接使用QStri...
  • u011430225
  • u011430225
  • 2017年04月14日 14:59
  • 2487

PyQt4官方手册翻译-00

PyQt4 基础介绍
  • MieAn100
  • MieAn100
  • 2015年04月22日 14:35
  • 2085

Java实现文档在线阅读

Java实现文档在线阅读
  • javaniuniu
  • javaniuniu
  • 2017年01月25日 15:36
  • 690

如何离线阅读Google SDK帮助文档

做Android开发免不了要阅读Google SDK中的文档。但往往会出现文档打开缓慢,格式错乱、图片确实等问题,给阅读带来很大的不便。通过摸索总结出如下离线阅读Google文档的方法,打开速度飞快,...
  • sunao2002002
  • sunao2002002
  • 2015年10月29日 23:30
  • 958

Android阅读Office文档,你想要的and不想要的都在这里

说起阅读Office文档,还是不得不羡慕IOS平台,人家只需要使用 WebView 加载网络文件的 Url 地址即可显示,而回头再看看我们Android,就比较苦逼了,“高墙耸立”之下,Google ...
  • ming_147
  • ming_147
  • 2016年12月28日 09:16
  • 1438

苹果Xcode帮助文档阅读指南

Xcode文档的结构 如上图,打开后,整个文档界面有左面的侧栏和右面的内容区域构成。左面的侧栏可以选择不同的文档库。你的Xcode里面一般来说有一组不同版本的iOS文档库、一组不同版本的...
  • leikezhu1981
  • leikezhu1981
  • 2016年04月25日 23:40
  • 467

PyQt4 学习笔记4之事件与信号

PyQt4中的事件与信号单击此处查看原文。 本节主要讲述PyQt4编程中出现的事件与信号。1 事件所有的GUI应用程序都是基于事件驱动的。事件主要由应用程序的用户产生,但也可以由其他方式生成:比如,...
  • Kai_gai
  • Kai_gai
  • 2015年10月31日 18:51
  • 4235

PyQt5 与 PyQt4 差别对比

PyQt5 与 PyQt4 差别
  • qw351363619
  • qw351363619
  • 2017年05月16日 16:05
  • 4408
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:pyqt4文档阅读(10):QValidator
举报原因:
原因补充:

(最多只允许输入30个字)