QT日历制作
@TOC
前言
在 Qt 中,QCalendar 类是提供日历功能的类。它用于操作和管理日期和时间信息,包括日期计算、日期格式化和解析,以及日期的比较和操作。
一、QCalendar 类介绍
QCalendar 类提供了以下主要功能:
日期和时间计算:QCalendar 具有一组强大的函数,用于执行常见的日期和时间计算操作,例如添加或减去天数、月份、年份,计算两个日期之间的天数差等。
日期和时间格式化:可以使用 QCalendar 定义日期和时间的格式。通过设置格式模板,可以根据需要以各种方式呈现日期和时间信息。例如,可以格式化日期为 “yyyy-MM-dd” 的形式,以显示年份、月份和日期。
日期和时间解析:你可以使用 QCalendar 将字符串解析为日期和时间对象。使用日期和时间解析功能,可以将字符串转换为 QDateTime 对象,以进行后续的日期和时间操作。
日期比较和操作:QCalendar 提供了用于比较和操作日期的函数。可以检查两个日期是否相等、比较两个日期的顺序(早于、晚于或相等)、计算两个日期之间的时间间隔等。
周和月信息:QCalendar 可以提供关于特定日期所属的周和月的信息。可以获取给定日期所在的周数、月份等信息。
效果展示:
二、界面布局
可以在 ui 设计师的界面进行布局。
可以看到 整个 ui 界面只通过三个控件来组成。可以使用布局管理器来进行排列布局,会显示的更整齐。
Calendar Widget : 日历控件。
label :标题栏部件,可以用来填充图片,文字。
三、代码讲解
1. lable 添加图片
首先我们需要添加一个资源文件,用来存放将要添加的图片。这个在我之前的文章中详细的介绍过,可以参考:Qt 制作小程序登录系统(超详细) 的 第 二 点 。
/* lable 添加图片 */
QPixmap pixmap(":/icon/calendar.jpg"); //添加图片路径
ui->label->setScaledContents(true); //启用图像的自动缩放。
ui->label->setPixmap(pixmap); // 设置标签控件的图片
QPixmap 是 Qt 中用于处理图像的类。它表示一个可用于显示的图像。
2. 设置主窗口背景色
/* 设置主窗口背景色 */
QPalette palette1;
palette1.setBrush(backgroundRole(), QBrush(QColor("#F5DEB3"))); //设置调色板的背景色
setPalette(palette1); //设置部件(窗口)的调色板
QPalette 是 Qt 中用于管理调色板的类。它用于管理窗口及其控件的颜色和外观属性.
backgroundRole() 是一个 QPalette::ColorRole 枚举值,表示背景色角色。它用于指定要设置的调色板元素。
3. 日历显示改变网格线颜色
/* true 显示网格线 */
ui->calendarWidget->setGridVisible(true);
可以通过 ==样式表== 改变网格的颜色。(要改变网格颜色前需要设置网格可显示)
也可以通过样式表设置 日历的文字字体,大小。
4. 显示表头日期
效果 : 当我们点击日历的某天时,在上面的 label 中会显示当前选中的时间。
当 用户选择了不同的日期时,将触发 ==selectionChanged( )== 信号,这样就可以设置槽函数来处理。
/* 建立连接 */
connect(ui->calendarWidget,SIGNAL(selectionChanged()),this,SLOT(showSelectedData()));
/* 槽函数 */
void Widget::showSelectedData() // 显示表头日期
{
//获取 calendarWidget 当前选择的日期,并将其以字符串的形式按照指定的格式转换为 “yyyy-MM-dd” 的形式
ui->m_label->setText(ui->calendarWidget->selectedDate().toString("yyyy-MM-dd"));
}
// 水平对齐方式设置为居中
ui->m_label->setAlignment(Qt::AlignHCenter);
总结
有不懂的 或者 想要详细代码的 可以点赞私信我。
- 点赞
- 收藏
- 关注作者
评论(0)