QT日历制作

前言

在 Qt 中,QCalendar 类是提供日历功能的类。它用于操作和管理日期和时间信息,包括日期计算、日期格式化和解析,以及日期的比较和操作。


一、QCalendar 类介绍

QCalendar 类提供了以下主要功能:

  1. 日期和时间计算:QCalendar 具有一组强大的函数,用于执行常见的日期和时间计算操作,例如添加或减去天数、月份、年份,计算两个日期之间的天数差等。

  2. 日期和时间格式化:可以使用 QCalendar 定义日期和时间的格式。通过设置格式模板,可以根据需要以各种方式呈现日期和时间信息。例如,可以格式化日期为 “yyyy-MM-dd” 的形式,以显示年份、月份和日期。

  3. 日期和时间解析:你可以使用 QCalendar 将字符串解析为日期和时间对象。使用日期和时间解析功能,可以将字符串转换为 QDateTime 对象,以进行后续的日期和时间操作。

  4. 日期比较和操作:QCalendar 提供了用于比较和操作日期的函数。可以检查两个日期是否相等、比较两个日期的顺序(早于、晚于或相等)、计算两个日期之间的时间间隔等。

  5. 周和月信息: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);

总结

有不懂的 或者 想要详细代码的 可以点赞私信我。

  • 10
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

糖果罐子♡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值