QT日历制作

文章目录

  • 前言
  • 一、QCalendar 类介绍
  • 二、界面布局
  • 三、代码讲解
      • 1. lable 添加图片
      • 2. 设置主窗口背景色
      • 3. 日历显示改变网格线颜色
      • 4. 显示表头日期
  • 总结

前言

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


一、QCalendar 类介绍

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

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

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

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

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

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

效果展示:
QT日历制作_第1张图片

二、界面布局

可以在 ui 设计师的界面进行布局。
可以看到 整个 ui 界面只通过三个控件来组成。可以使用布局管理器来进行排列布局,会显示的更整齐。
QT日历制作_第2张图片

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

可以通过 样式表 改变网格的颜色。(要改变网格颜色前需要设置网格可显示)
也可以通过样式表设置 日历的文字字体,大小。
QT日历制作_第3张图片

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

总结

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

你可能感兴趣的:(Qt,qt,开发语言,日历,C++,windows)