【Qt开发】显示类控件(四)-> QCalendarWidget
目录
1 -> 概述
2 -> 核心属性
3 -> 重要信号
4 -> 视觉设计
5 -> 功能特性
5.1 -> 定制化能力
6 -> 代码示例:获取选中的日期
7 -> 总结
1 -> 概述
QCalendarWidget 是 Qt 框架中一个功能强大且直观的日期选择控件,它为应用程序提供了美观且用户友好的日历界面。这个组件封装了完整的日历功能,允许用户轻松查看、选择和导航日期,是许多桌面应用程序中不可或缺的UI元素。
QCalendarWidget 默认呈现为一个月视图,清晰展示当前月份的日期布局。其设计遵循用户熟悉的传统日历格式,顶部显示周几的缩写(如Mon、Tue),并以不同颜色区分工作日和周末。当前日期会有明显的视觉突出,而所选日期则通过高亮背景色标识,提供直观的视觉反馈。
控件顶部包含导航元素,用户可以通过左右箭头按钮逐月浏览,也可以直接点击月份名称从弹出菜单中选择特定月份,或点击年份数字进行年份的快速选择。这种多层级的导航设计既满足了精确跳转的需求,也支持快速浏览。
2 -> 核心属性
属性 | 说明 |
selectDate | 当前选中的日期 |
minimumDate | 最小日期 |
maximumDate | 最大日期 |
firstDayOfWeek | 每周的第一天(也就是日历的第一列)是周几 |
gridVisible | 是否显示表格的边框 |
selectionMode | 是否允许选择日期 |
navigationBarVisible | 日历上方标题是否显示 |
horizontalHeaderFormat | 日历上方标题显示的日期格式 |
verticalHeaderFormat | 日历第一列显示的内容格式 |
dateEditEnabled | 是否允许日期被编辑 |
3 -> 重要信号
信号 | 说明 |
selectionChanged(const QDate&) | 当选中的日期发生改变时发出 |
activated(const QDate&) | 当双击一个有效的日期或者按下回车键时发出,形参是一个 QDate 类型,保存了选中的日期 |
currentPageChanged(int, int) | 当年份月份改变时发出,形参表示改变后的新年份和月份 |
4 -> 视觉设计
QCalendarWidget 默认呈现为一个月视图,清晰展示当前月份的日期布局。其设计遵循用户熟悉的传统日历格式,顶部显示周几的缩写(如Mon、Tue),并以不同颜色区分工作日和周末。当前日期会有明显的视觉突出,而所选日期则通过高亮背景色标识,提供直观的视觉反馈。
控件顶部包含导航元素,用户可以通过左右箭头按钮逐月浏览,也可以直接点击月份名称从弹出菜单中选择特定月份,或点击年份数字进行年份的快速选择。这种多层级的导航设计既满足了精确跳转的需求,也支持快速浏览。
5 -> 功能特性
QCalendarWidget 提供了丰富的内置功能。它支持单选和多选模式,开发者可以根据需要配置选择行为。控件允许设置最小和最大日期范围,限制用户只能选择特定范围内的日期,这对于需要日期约束的应用场景非常实用。
该组件还支持多种显示选项,可以配置为显示周数(ISO标准),让用户能够看到每年的周编号。此外,开发者可以自定义每周的第一天(如周一或周日),适应不同地区的习惯。
5.1 -> 定制化能力
QCalendarWidget 的一个显著优势是其高度的可定制性。通过 Qt 的样式表机制,开发者可以轻松改变控件的外观,调整颜色、字体、边框等视觉属性,使其与应用程序的整体设计语言保持一致。
对于更高级的定制需求,开发者可以继承 QCalendarWidget 类并重写其绘制方法,实现完全自定义的日期单元格渲染。这使得能够在日历中添加特殊标记、图标或其他视觉元素,满足诸如任务管理、事件提醒等特定应用场景的需求。
6 -> 代码示例:获取选中的日期
1. 在界面上创建一个 QCalendarWidget 和一个 QLabel
objectName 为默认
2. 给 QCalendarWidget 添加 slot 函数
#include "widget.h"
#include "ui_widget.h"#include <QDebug>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);
}Widget::~Widget()
{delete ui;
}void Widget::on_calendarWidget_selectionChanged()
{QDate date = ui->calendarWidget->selectedDate();qDebug() << date;ui->label->setText(date.toString());
}
3. 执行程序,可以看到当选择不同的日期时,label 中的内容就会随之改变
7 -> 总结
QCalendarWidget 是 Qt 提供的一个成熟、功能全面的日期选择解决方案,它平衡了开箱即用的便利性与高度可定制的灵活性。无论是快速原型开发还是需要精细调优的商业应用,QCalendarWidget 都能提供可靠的日期选择功能,极大地简化了开发过程,同时确保最终用户获得一致且愉悦的体验。
感谢各位大佬支持!!!
互三啦!!!