QT日历制作

举报
糖果罐子 发表于 2023/07/21 20:17:47 2023/07/21
【摘要】 @TOC 前言在 Qt 中,QCalendar 类是提供日历功能的类。它用于操作和管理日期和时间信息,包括日期计算、日期格式化和解析,以及日期的比较和操作。 一、QCalendar 类介绍QCalendar 类提供了以下主要功能:日期和时间计算:QCalendar 具有一组强大的函数,用于执行常见的日期和时间计算操作,例如添加或减去天数、月份、年份,计算两个日期之间的天数差等。日期和时间格式...

@TOC

前言

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


一、QCalendar 类介绍

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

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

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

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

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

  5. 周和月信息:QCalendar 可以提供关于特定日期所属的周和月的信息。可以获取给定日期所在的周数、月份等信息。

效果展示:
image.png

二、界面布局

可以在 ui 设计师的界面进行布局。
可以看到 整个 ui 界面只通过三个控件来组成。可以使用布局管理器来进行排列布局,会显示的更整齐。
image.png

  • 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);

总结

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

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。