Qt入门系列开发教程基础控件篇QCalendarWidget日历控件
Posted 鱼酱2333
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt入门系列开发教程基础控件篇QCalendarWidget日历控件相关的知识,希望对你有一定的参考价值。
效果图
描述
小部件使用当前月份和年份进行初始化,但 QCalendarWidget 提供了几个公共槽来更改显示的年份和月份。
默认情况下,选择今天的日期,用户可以使用鼠标和键盘来选择日期。可以使用 selectedDate() 函数检索当前选定的日期。通过设置 minimumDate 和 maximumDate 属性,可以将用户选择限制在给定的日期范围内。或者,可以使用 setDateRange() 便利槽一次性设置这两个属性。将 selectionMode 属性设置为 NoSelection 以完全禁止用户进行选择。请注意,也可以使用 setSelectedDate() 槽以编程方式选择日期。
当前显示的月份和年份可以分别使用 monthShown() 和 yearShown() 函数检索。
新创建的日历小部件使用缩写的日期名称,周六和周日都标记为红色。日历网格不可见。显示周数,第一列 day 是日历区域设置的一周的第一天。
通过将 HorizontalHeaderFormat 属性设置为 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入门系列开发教程基础控件篇小部件(所有控件的基类QWidget)
Qt入门系列开发教程基础控件篇QProgressBar进度条
Qt入门系列开发教程基础控件篇QCalendarWidget日历控件