一、概述

Designer输入部件中的Spin Box、Double Spin Box、Time Edit、Date Edit、Date/Time Edit分别对应类QSpinBox、 QDoubleSpinBox、QDateTimeEdit、QDateEdit和QTimeEdit,这些类都是从QAbstractSpinBox类派生的子类,其中QDateEdit和QTimeEdit又是从QDateTimeEdit派生的。

QAbstractSpinBox提供了一个可调整的数字设定的基础部件和一个显示当前数字的设定值的编辑部件。类的主要属性如下:

  • text属性:显示在QAbstractSpinBox中的文本
  • wrapping属性:wrapping属性用于控制部件显示值达到最小值时再向下调整是否允许调整后直接跳转到最大值,反之亦然
  • specialValueText属性:用于控制当达到最小值是显示数字还是显示本属性设置的文本,如果设置了本属性则达到最小值显示本属性文本
  • accelerated属性:控制当持续按下调整按钮时,调整数字是否加速调整,即是否按压时间越久数字增大或减小的速度越快
  • 部分外观属性:包括frame、buttonSymbols、alignment、showGroupSeparator等

二、QSpinBox数字设定部件

在输入部件中,数字调整框QSpinBox是个很实用的从连续数字中取值的一个部件。QSpinBox的父类是QAbstractSpinBox,QAbstractSpinBox的父类是QWidget。它具有如下特点:

  1. 可以设定调整数字的范围,包括最小值和最大值,请参考maximum属性和maximum属性;
  2. 可以设置数字调整时的变化步长,请参数singleStep属性;
  3. 可以设置数字达到最大值或最小值是否跳转到最小值或最大值构成一个数字环,请参考父类QAbstractSpinBox的wrapping属性;
  4. 可以设置是否点击调整按钮时间越长数字变化越快,请参考父类QAbstractSpinBox的accelerated属性;
  5. 可以设置数字前是否加文字前缀或数字后加文字后缀,如表示月份的数字后加‘月’、表示星期的数字前加‘周’,请参考prefix属性和suffix属性;
  6. 可以启用数字是否适应当前值的情况跳跃性变化,这个跳跃性变化是指步长会以当前值除10取整之后、再将首位换成1其余位换成0的数字,即这个步长数字是10的幂值(含0幂值1和1幂值10),不过这个需要用到属性5.12版本新增的属性stepType;
  7. 可以设定显示数字的进制,任何整数进制都可以,如3进制、99进制等,可以参考displayIntegerBase属性;
  8. 可以调整按钮的外观和数字对齐方式,请参考父类QAbstractSpinBox的alignment属性、buttonSymbols属性、frame属性、showGroupSeparator;
  9. 可以在数字达到最小值显示一个特殊文本,如一个缩放比例范围是0-1000,前缀为%,设置特殊文本为“根据窗口大小自动缩放”,则当数字达到0时,在数字调整框显示的内容不是"%0",而是“根据窗口大小自动缩放”,请参考QAbstractSpinBox的specialValueText属性。

具体属性和方法不进行详细介绍,请参考官方文档即可。

下图是一个用2个QSpinBox对象表示年月的示例

三、QDoubleSpinBox浮点数字设定部件

QDoubleSpinBox同样是从父类QAbstractSpinBox派生的子类,其功能与QSpinBox数字调整框基本类似,可以说QSpinBox数字调整框有的功能在QDoubleSpinBox基本同样存在,只是QDoubleSpinBox浮点数调整框如下方面有所变化:

  1. 取值数字支持小数,小数位数可定义,请参考QDoubleSpinBox的decimals属性;
  2. 步长支持小数,请参考QDoubleSpinBox的 singleStep属性;
  3. 不支持进制设置。

其他功能与QSpinBox数字调整框完全相同,具体相关功能比较简单,请参考官方文档。

下图是一个以2个QDoubleSpinBox部件实现的汇率兑换金额换算:

四、QDateTimeEdit日期时间编辑部件

Designer输入部件中,Date/Time Edit是个日期时间编辑框,对应类QDateTimeEdit,该类是从父类QAbstractSpinBox派生。

QDateTimeEdit具有如下功能:

  • 可以设置最小日期和最大日期,请参考maximumDateTime属性、minimumDateTime属性、maximumTime属性、minimTime属性、 minimumDate属性、 maximumDate属性以及setDateTimeRange()、setDateRange()、setTimeRange()、clearMinimumDateTime()、clearMinimumDate()、clearMaximumDate()、clearMinimumTime()、 clearMaximumTime()方法
  • 可以设置日期和时间显示的格式,请参考displayFormat属性和fromString方法
  • 可以通过左右光标键或tab、shift+tab键在对应年、月、日、时、分、秒的字段间移动,可以通过上下光标键或直接输入数字调整当前字段的值,可以通过currentSection属性访问当前字段,可以通过currentSectionIndex方法获取光标在显示字符串的位置
  • 可以通过构造方法或setDateTime方法设置显示的时间,当前时间可以通过QDateTime.currentDateTime()方法获取
  • 可以通过time、date和dateTime属性访问QDateTimeEdit日期时间编辑框的当前时间、日期
  • 可以通过timeSpec 属性访问QDateTimeEdit日期时间编辑框的当前时区
  • 可以设置在点击调整日期时间时是否显示一个日历弹出窗,请参考calendarPopup属性。有弹窗时弹窗如下:



无弹窗时可以点击下图中的上下按钮修改所在字段的值:

五、QDateEdit日期编辑部件和QTimeEdit时间编辑部件

Designer输入部件中,Date Edit和Time Edit是日期和时间编辑部件,对应类QDateEdit和QTimeEdit,这2个类都是从父类QDateTimeEdit派生的。

相对于父类QDateTimeEdit,QDateEdit和QTimeEdit的变化点主要只有如下3点:

  • 界面显示上,QDateTimeEdit可以有完整的年月日时分秒字段,而QDateEdit只显示年月日三个字段,QTimeEdit只显示时分秒三个字段
  • QDateTimeEdit的一些属性根据两个子类的不同有如下默认值的调整,如QDateEdit的displayFormat属性只显示日期相关字段,QTimeEdit只显示时间相关字段,currentSection属性也是类似
  • 构造方法QDateEdit和QTimeEdit有专有构造方法,参数也是与各自对应的参数

跟老猿学Python、学5G!

第15.43节、PyQt输入部件:QAbstractSpinBox派生类QSpinBox、 QDoubleSpinBox、QDateTimeEdit、QDateEdit和QTimeEdit功能简介的更多相关文章

  1. 第三十六章、PyQt输入部件:QAbstractSpinBox派生类QSpinBox、 QDoubleSpinBox、QDateTimeEdit、QDateEdit和QTimeEdit

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一.概述 Designer输入部件中的Spin B ...

  2. 第15.44节、PyQt输入部件:QAbstractSlider派生类QScrollBar滚动条、QSlider滑动条、QDial刻度盘功能详解

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一.引言 Designer中的输入部件Horizo ...

  3. 第15.45节、PyQt输入部件:QKeySequenceEdit快捷键输入部件简介和使用案例

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一.功能简介 Key Sequence Edit输 ...

  4. 第15.38节 PyQt(Python+Qt)入门学习:containers容器类部件QDockWidget停靠窗功能详解

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 一.概述 QDockWidget类提供了一个可以停靠在QMainWin ...

  5. 第15.37节 PyQt(Python+Qt)入门学习:containers容器类部件QMdiArea多文档界面部件详解及编程开发案例

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 一.引言 老猿在前期学习PyQt相关知识时,对每个组件的属性及方法都研 ...

  6. 第15.30节 PyQt编程实战:通过eventFilter监视QScrollArea的widget()的Paint消息画出scrollAreaWidgetContents的范围矩形

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.引言 在<PyQt(Python+Qt)学习随笔:QScrollArea滚动区域详解> ...

  7. 第15.18节 PyQt(Python+Qt)入门学习:Model/View架构中视图Item Views父类详解

    老猿Python博文目录 老猿Python博客地址 一.概述 在PyQt图形界面中,支持采用Model/View架构实现数据和界面逻辑分离,其中Model用于处理数据存储,View用于界面数据展现,当 ...

  8. 第15.9节 PyQt学习入门:使用Qt Designer进行GUI设计的步骤

    在使用Qt Designer进行GUI设计时,一般常规的步骤都是差不多的,主要步骤包括新建显示窗口.在窗口上按照规划的布局放置组件.设置初始化组件的属性.定义信号和槽函数的连接,一般后三步是每增加一个 ...

  9. 第15.25节 PyQt(Python+Qt)入门学习:Model/View开发实战--使用QTableView展示Excel文件内容

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.概述 在前面的订阅专栏<第十九章.Model/View开发:QTableView的功能及属 ...

随机推荐

  1. 推荐系统,深度论文剖析GBDT+LR

    今天我们来剖析一篇经典的论文:Practial Lessons from Predicting Clicks on Ads at Facebook.从这篇paper的名称当中我们可以看得出来,这篇pa ...

  2. Flink的sink实战之四:自定义

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  3. 【笔记】拉勾Java工程师高薪训练营-第一阶段 开源框架源码解析-模块一 持久层框架涉及实现及MyBatis源码分析-任务一:自定义持久层框架

    以下笔记是我看完视频之后总结整理的,部分较为基础的知识点也做了补充,如有问题欢迎沟通. 目录 任务一:自定义持久层框架 1.1 JDBC回顾及问题分析 1.2 自定义持久层框架思路分析 1.3 IPe ...

  4. 压缩法备份Linux系统文件

    在使用Ubuntu之前,相信很多人都有过使用Windows系统的经历.如果你备份过Windows系统,那么你一定记忆犹新:首先需要找到一个备份工 具(通常都是私有软件),然后重启电脑进入备份工具提供的 ...

  5. ESP32的Linux开发环境搭建

    1. 官网教程地址 https://docs.espressif.com/projects/esp-idf/zh_CN/v4.0.1/get-started/linux-setup.html 2.官网 ...

  6. 加解密 C语言实现

    1.加密的基本原理 加密分为对称加密和非对称加密,对称加密就是加密方和解密放用同一个密钥. 加密是分组加密,即将明文数据分成多个密钥大小的块,依次和密钥运算,输出密文. padding,由于加密需要分 ...

  7. JS 实现飞机大战

    这是JS版本的飞机大战,和C#版本的思路相同,就是语言上有差别,用来巩固知识.可以将代码直接引入到HTML中就可以看到效果 //编写背景对象 function Background(width,hei ...

  8. 配置内网访问的TV

    前言 通过内网模式访问tv远程机器 方法 云主机配置 一台云主机,云主机申请两个公网IP 云主机启动两个frps进程绑定到两个内网的ip 客户端配置 远程一台linux跳板机运行frpc,启动两个进程 ...

  9. 使用日志系统graylog获取Ceph集群状态

    前言 在看集群的配置文件的时候看到ceph里面有一个graylog的输出选择,目前看到的是可以收集mon日志和clog,osd单个的日志没有看到,Elasticsearch有整套的日志收集系统,可以很 ...

  10. 基于gin的golang web开发:集成swagger

    在前后端分离的项目维护一份完整且及时更新的api文档会极大的提高我们的工作效率,传统项目中接口文档都是由后端开发手写的,这种文档很难保证及时性,久而久之便失去了参考意义.swagger给我们提供了一种 ...