Qt入门系列开发教程基础控件篇QCalendarWidget日历控件

Posted 鱼酱2333

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt入门系列开发教程基础控件篇QCalendarWidget日历控件相关的知识,希望对你有一定的参考价值。

效果图

描述

小部件使用当前月份和年份进行初始化,但 QCalendarWidget 提供了几个公共槽来更改显示的年份和月份。
默认情况下,选择今天的日期,用户可以使用鼠标和键盘来选择日期。可以使用 selectedDate() 函数检索当前选定的日期。通过设置 minimumDate 和 maximumDate 属性,可以将用户选择限制在给定的日期范围内。或者,可以使用 setDateRange() 便利槽一次性设置这两个属性。将 selectionMode 属性设置为 NoSelection 以完全禁止用户进行选择。请注意,也可以使用 setSelectedDate() 槽以编程方式选择日期。
当前显示的月份和年份可以分别使用 monthShown() 和 yearShown() 函数检索。
新创建的日历小部件使用缩写的日期名称,周六和周日都标记为红色。日历网格不可见。显示周数,第一列 day 是日历区域设置的一周的第一天。
通过将 Horizo​​ntalHeaderFormat 属性设置为 QCalendarWidget::SingleLetterDayNames,可以将日期的表示法更改为单个字母缩写(“M”表示“Monday”)。将相同的属性设置为 QCalendarWidget::LongDayNames 会使标题显示完整的日期名称。可以通过将 verticalHeaderFormat 属性设置为 QCalendarWidget::NoVerticalHeader 来删除周数。可以通过使用 setGridVisible() 函数将 gridVisible 属性设置为 true 来打开日历网格:

最后,可以使用 setFirstDayOfWeek() 函数更改第一列中的日期。
QCalendarWidget 类还提供了三个信号,selectionChanged()、activated() 和 currentPageChanged(),从而可以响应用户交互。
标题、工作日或单日的呈现可以通过为某些特殊的工作日、特殊日期或标题的呈现设置 QTextCharFormat 来很大程度上定制。
日历小部件仅使用 QTextCharFormat 中的一部分属性。 目前,前景、背景和字体属性用于确定小部件中单个单元格的呈现。

属性

  • dateEditAcceptDelay : int:此属性保存在接受其内容之前显示非活动日期编辑的时间

  • dateEditEnabled : bool:此属性保存是否启用日期编辑弹出窗口

  • firstDayOfWeek : Qt::DayOfWeek:此属性包含一个值,用于标识第一列中显示的日期

  • gridVisible : bool 此属性保存是否显示表格网格。

  • horizontalHeaderFormat : HorizontalHeaderFormat此属性保存水平标题的格式。

  • maximumDate : QDate最大日起

  • minimumDate : QDate最小日期

  • navigationBarVisible : bool该属性保存导航栏是否显示

  • selectedDate : QDate该属性保存当前选定的日期。

  • selectionMode : SelectionMode日期无法被选择/只有一个日期被选择

  • verticalHeaderFormat : VerticalHeaderFormat垂直标头格式

API

//此属性保存在接受其内容之前显示非活动日期编辑的时间
 int dateEditAcceptDelay() const
// 返回一个从 QDate 到 QTextCharFormat 的 QMap,显示所有使用改变其呈现的特殊格式的日期。
 QMap<QDate, QTextCharFormat> dateTextFormat() const
// 返回日期的 QTextCharFormat。 如果没有特别渲染日期,char 格式可以为空。
 QTextCharFormat dateTextFormat(QDate date) const
 //此属性包含一个值,用于标识第一列中显示的日期。
 Qt::DayOfWeek firstDayOfWeek() const
//返回用于呈现标题的文本字符格式。
 QTextCharFormat headerTextFormat() const
 //水平标题可以显示的各种格式。
 QCalendarWidget::HorizontalHeaderFormat horizontalHeaderFormat() const
 //日期是否可用
 bool isDateEditEnabled() const
 //表格是否可见
 bool isGridVisible() const
 //导航bar是否可见
 bool isNavigationBarVisible() const
 //最大日期
 QDate maximumDate() const
 //最小日期
 QDate minimumDate() const
 //显示的月
 int monthShown() const
 //选择的日期
 QDate selectedDate() const
 //选择的模式
 QCalendarWidget::SelectionMode selectionMode() const
 //此属性保存在接受其内容之前显示非活动日期编辑的时间
 void setDateEditAcceptDelay(int delay)
 //设置日期可编辑
 void setDateEditEnabled(bool enable)
 //设置日期格式
 void setDateTextFormat(QDate date, const QTextCharFormat &format)
 //此属性包含一个值,用于标识第一列中显示的日期
 void setFirstDayOfWeek(Qt::DayOfWeek dayOfWeek)
 //设置用于将标题呈现为格式的文本字符格式。 如果您还设置了工作日文本格式,则此格式的前景色和背景色将优先于标题格式。 其他格式信息仍将由标头的格式决定。
 void setHeaderTextFormat(const QTextCharFormat &format)
 void setHorizontalHeaderFormat(QCalendarWidget::HorizontalHeaderFormat format)
// 最大日期
 void setMaximumDate(QDate date)
//最小日期
 void setMinimumDate(QDate date)
//选择的模式
 void setSelectionMode(QCalendarWidget::SelectionMode mode)

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

 QCalendarWidget::VerticalHeaderFormat verticalHeaderFormat() const

 QTextCharFormat weekdayTextFormat(Qt::DayOfWeek dayOfWeek) const
 //显示的年
 int yearShown() const

公有槽函数

//设置当前页的年份月份
 void setCurrentPage(int year, int month)
//设置日期范围
 void setDateRange(QDate min, QDate max)
 //表格是否可见
 void setGridVisible(bool show)
 //该属性保存导航栏是否显示
 void setNavigationBarVisible(bool visible)
 //设置选择的日期
 void setSelectedDate(QDate date)
//下个月
 void showNextMonth()
 //明年
 void showNextYear()
//上个月
 void showPreviousMonth()
 //去年
 void showPreviousYear()
 //显示选择的日期
 void showSelectedDate()
 //显示今天
 void showToday()

信号

//每当用户按下 Return 或 Enter 键或双击日历小部件中的日期时,都会发出此信号。
 void activated(QDate date)
 //单击鼠标按钮时会发出此信号。 单击鼠标的日期由日期指定。 该信号仅在单击有效日期时发出,例//如,日期不在 minimumDate() 和 maximumDate() 之外。 如果选择模式为 NoSelection,则不会发出//此信号。
 void clicked(QDate date)
 //年份月份变化
 void currentPageChanged(int year, int month)
 //当前选择的日期改变时发出这个信号。
 void selectionChanged()

以上是关于Qt入门系列开发教程基础控件篇QCalendarWidget日历控件的主要内容,如果未能解决你的问题,请参考以下文章

Qt入门系列开发教程基础控件篇框架QFrame

Qt入门系列开发教程基础控件篇小部件(所有控件的基类QWidget)

Qt入门系列开发教程基础控件篇QProgressBar进度条

Qt入门系列开发教程基础控件篇QCalendarWidget日历控件

Qt入门系列开发教程基础控件篇单选按钮QRadioButton

Qt入门系列开发教程基础控件篇QTextBrowser文本浏览控件