当前位置: 首页 > news >正文

Qt应用开发(基础篇)——日历 QCalendarWidget

一、前言

        QCalendarWidget类继承于QWidget,是Qt设计用来让用户更直观的选择日期的窗口部件。

        时间微调输入框 

        QCalendarWidget根据年份和月份初始化,程序员也通过提供公共函数去改变他们,默认日期为当前的系统时间,用户通过鼠标和键盘去修改选中的日期,或者通过公共函数setSelectedDate改变它,也可以设置选择模式selectionMode去限制用户的行为,通过设置最小时间minimumDate和最大时间maximumDate限制可选择的日期范围。

        日历的样式,第一行默认显示星期几,周六和周天是标记为红色,第一列显示一年中的第几周,默认没有网格线,第二列显示为系统时间的每周第一天,也就是说如果你系统时间是在北京,那么第一天是周一,如果是在美国,那么第一天就是周日,可以通过setFirstDayOfWeek修改默认值。

二、QCalendarWidget类

1、dateEditEnabled 

        该属性表示是否使用一个弹出框来选择当前选中时间,按下非修饰键(空格、字母等)会弹出一个日期编辑框,如果按下的是数字,弹窗并认为按下的数字为输入,弹窗的小部件类似于QDateEdit,修改之后会在一定的延迟dateEditAcceptDelay之后生效。

bool isDateEditEnabled() const
void setDateEditEnabled(bool enable)

2、dateEditAcceptDelay

        该属性表示,在dateEditEnabled为true的情况下,弹窗小部件编辑结束之后延迟多久生效,参数为毫秒ms。

int dateEditAcceptDelay() const
void setDateEditAcceptDelay(int delay)

3、firstDayOfWeek

        该属性表示每周的第一天是周几。

Qt::DayOfWeek firstDayOfWeek() const
void setFirstDayOfWeek(Qt::DayOfWeek dayOfWeek)
Qt::DayOfWeek描述
Qt::Monday周一
Qt::Tuesday周二
Qt::Wednesday周三
Qt::Thursday周四
Qt::Friday周五
Qt::Saturday周六
Qt::Sunday周日

4、gridVisible

        该属性表示是否显示表格线,默认为false不显示。

bool isGridVisible() const
void setGridVisible(bool show)

 5、horizontalHeaderFormat

        该属性表示水平标题的格式。

        SingleLetterDayNames:显示单个字母,比如M表示Monday,中文只会显示周,而不是一、二、三这样,是有bug的,所以该格式只适用于英文。

        ShortDayNames:显示简称名,比如英文Mon表示Monday,中文周一表示星期一。

        LongDayNames:显示全称,比如英文Monday,中文星期一。

        NoHorizontalHeader:不显示水平标题。

HorizontalHeaderFormat horizontalHeaderFormat() const
void setHorizontalHeaderFormat(HorizontalHeaderFormat format)
LongDayNames

6、verticalHeaderFormat

        该属性表示垂直标题的格式,默认为ISOWeekNumbers显示为一年中的第几周,还有一种NoVerticalHeader不显示。

VerticalHeaderFormat verticalHeaderFormat() const
void setVerticalHeaderFormat(VerticalHeaderFormat)
NoVerticalHeader

 

7、maximumDate

        该属性表示日历可选择的最大日期,如果设置了最大日期,而选择日期大于最大日期,那么当前日期会被调整。如果使用setSelectedDate选择日期大于最大日期,那么不会生效。

QDate maximumDate() const
void setMaximumDate(const QDate &date)

8、minimumDate

        该属性表示日期可选择的最小日期,效果参照maximumDate

QDate minimumDate() const
void setMinimumDate(const QDate &date)

9、navigationBarVisible

        该属性表示导航是否显示,默认为true,下个月、上个月、月选择、年选择可视。

bool isNavigationBarVisible() const
void setNavigationBarVisible(bool visible)
navigationBarVisible = false

10、selectedDate 

        该属性表示当前选择的日期,设置不可超出最大值maximumDate和最小值minimumDate范围,否则无效。

QDate selectedDate() const
void setSelectedDate(const QDate &date)

11、selectionMode

        该属性表示用户选择日期的策略。

        默认为SingleSelection,用户可以通过鼠标或者键盘在范围内进行日期的选择。

        还有一种是NoSelection,用户不能选择日期,但是依然可以通过程序selectedDate去选择。

SelectionMode selectionMode() const
void setSelectionMode(SelectionMode mode)

12、公共函数

1)dateTextFormat

        获取文本格式,使用QTextCharFormat封装,类包含文本字体属性、布局属性等内容。可返回每个日期的文本格式,使用一个QMap保存每个日期对应的格式,这样Map内容很大,不建议这么干,尽量使用第二个。

QMap<QDate, QTextCharFormat> dateTextFormat() const
QTextCharFormat dateTextFormat(const QDate &date) const

       设置文本格式,使用QTextCharFormat封装,类包含文本字体属性、布局属性等内容。

void setDateTextFormat(const QDate &date, const QTextCharFormat &format)

2)monthShown

        获取当前显示的月份。

int monthShown() const

3)yearShown

        获取当前显示的年份。

int yearShown() const

4)weekdayTextFormat

        获取显示日期的文本格式,参考dateTextFormat

QTextCharFormat weekdayTextFormat(Qt::DayOfWeek dayOfWeek) const

       设置日期显示的文本格式,参考dateTextFormat

void setWeekdayTextFormat(Qt::DayOfWeek dayOfWeek, const QTextCharFormat &format)

5)setCurrentPage 

        设置当前要显示年和月,类似setSelectedDate。

void setCurrentPage(int year, int month)

6)setDateRange

        设置当前可选日期的范围,相当于setMaximumDatesetMinimumDate。

void setDateRange(const QDate &min, const QDate &max)

7)showNextMonth

        主动显示下个月。

void showNextMonth()

8)showNextYear

        主动显示下一年。

void showNextYear()

 9)showPreviousMonth

        主动显示上个月。

void showPreviousMonth()

10)showPreviousYear

        主动显示上一年。

void showPreviousYear()

 11)showSelectedDate

        主动显示当前选择的日期,比如你主动showPreviousMonth显示了上个月,在没有重新选中日期的情况下,使用此函数可以回到当前选择的日期,当然也可以记住选择,用setSelectedDate回到过去。

void showSelectedDate()

  12)showToday

        主动显示系统日期。

void showToday()

13、信号

1)activated

        用户按下RETURN键、Enter键或者双击日历的时候触发,得到当前选择的时间。

void activated(const QDate &date)

2)clicked

        用户点击选择时间的时候触发,但是如果用户点击的区域超出范围,或者用户设置选择策略selectionModeNoSelection,那么不会触发。

void clicked(const QDate &date)

3)currentPageChanged

        当前页改变的时候触发,得到新页的年份和月份。

void currentPageChanged(int year, int month)

4)selectionChanged

        当前选择的日期改变的时候触发,用户可以通过鼠标、键盘或者setSelectedDate改变当前选择的时间。

void selectionChanged()
http://www.lryc.cn/news/142667.html

相关文章:

  • Python学习笔记:正则表达式、逻辑运算符、lamda、二叉树遍历规则、类的判断
  • 【滑动窗口】leetcode1004:最大连续1的个数
  • 力扣:73. 矩阵置零(Python3)
  • VB|基础语法 变量定义 函数定义 循环语句 IF判断语句等
  • Github 博客搭建
  • 模型预测笔记(三):通过交叉验证网格搜索机器学习的最优参数
  • 创建型模式-建造者模式
  • Rust常用加密算法
  • [管理与领导-55]:IT基层管理者 - 扩展技能 - 1 - 时间管理 -2- 自律与自身作则,管理者管好自己时间的五步法
  • 电子商务员考试题库及答案(中级)--判断题
  • (WAF)Web应用程序防火墙介绍
  • SpringMVC拦截器常见应用场景
  • 爬虫:绕过5秒盾Cloudflare和DDoS-GUARD
  • 数据仓库环境下的超市进销存系统结构
  • leetcode:2011. 执行操作后的变量值(python3解法)
  • ubuntu下mysql
  • 大模型从入门到应用——LangChain:链(Chains)-[链与索引:检索式问答]
  • 【LeetCode-中等题】142. 环形链表 II
  • Android TV开发之VerticalGridView
  • SpringBoot+Vue项目添加腾讯云人脸识别
  • 什么是IPv4?什么又是IPv6?
  • 飞腾FT-2000/4、D2000 log报错指导(3)
  • 基于安卓的考研助手系统app 微信小程序
  • Leetcode:238. 除自身以外数组的乘积【题解超详细】
  • 基于单片机的智能数字电子秤proteus仿真设计
  • 大数据(二)大数据行业相关统计数据
  • Ruoyi安装部署(linux环境、前后端不分离版本)
  • PHP聚合支付网站源码/对接十多个支付接口 第三方/第四方支付/系统源码
  • 容器化微服务:用Kubernetes实现弹性部署
  • DevOps系列文章 之 Python基础