QT日历制作

news2024/11/26 2:23:43

文章目录

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

前言

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

总结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/666686.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

为什么黑客不黑赌博软件?如何成为一名顶级黑客?

攻击了,只是你不知道而已! 同样,对方也不会通知你,告诉你他黑了赌博网站。 攻击赌博网站的不一定是正义的黑客,也可能是因赌博输钱而误入歧途的法外狂徒。之前看过一个警方破获的真实案件:28岁小伙因赌博…

Java安装配置教程,2023年最新版,全部版本看这一篇就够了!!

JDK新手无脑安装配置教程❤❤❤ JDK下载网址 ps:如果你的JDK版本在官网没有找到,可以通过第三方资源进行下载,下载安装配置教程是通用的 官方链接>https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html 安装步骤…

【Leetcode60天带刷】day17二叉树——110.平衡二叉树 , 257. 二叉树的所有路径 ,404.左叶子之和

题目: 110. 平衡二叉树 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。 示例 1: 输入:root [3,9,20…

SpringBoot + Vue前后端分离项目实战 || 二:Spring Boot后端与数据库连接

系列文章: SpringBoot Vue前后端分离项目实战 || 一:Vue前端设计 文章目录 新建Spring后台项目添加依赖 新建数据库IDEA 连接数据库IDEA 自动创建类实体定义数据传递至前端的格式 B站视频讲解:2023全网最简单但实用的SpringBootVue前后端分离…

DJ4-4 NAT、ICMP、IPv6

目录 一、NAT:网络地址转换 1、工作原理 2、NAT 的限制 二、ICMP 1、ICMP 协议 2、ICMP 类型和代码 3、Traceroute 命令 三、IPv6 地址 1、IPv6 的引入 2、IPv6 的表示 一、NAT:网络地址转换 动机:对外部网络来讲,本地…

RISC-V处理器的设计与实现——基本指令集

本人小白一枚,在学习FPGA的过程中偶然刷到了tinyriscv这个开源项目,并且自己对计算机体系结构的知识也很感兴趣,所以想参考这个开源项目做一个基于RISC-V指令集的CPU,下面是tinyriscv这个开源项目的地址,本项目很多思路…

优思学院|六西格玛倡导者与项目赞助人是什么角色?有何区别?

倡导者(Champion)和项目赞助人(Sponsor)在正式的六西格玛的组织架构中是两个不同的角色,所以希望在这篇文章中解释一下两个角色的区别。 倡导者(Champion)是负责组织竞争力和增长的董事和高管&…

quartus 无法识别usb blaster

一、Windows无法正常驱动USB-Blaster 问题:驱动问题 解决方法: 右键我的电脑->管理->设备管理器找到设备USB-Blaster,此时是带有黄色感叹号的 3.右键->更新驱动程序软件 4. 选择“浏览计算机以查找驱动程序软件(R)”,如选择自动搜索是不能安装成功的,…

jQuery 基础语法使用指南

🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔🤺🤺🤺 目录 1. 引入 jQuery 2. jQuery 语法 3. 选择器 …

FusionComputeV100R006C10SPC101平台安装win10踩坑记

生产环境中有一套华为FusionCompute,版本比较老,V100R006C10SPC101,该产品已EOS了,无法升级。因业务需要,需安装Windows10系统,遇到了不少坑,在此记录一下。 一、坑1:Windows10版本…

CAN总线终端电阻

CAN总线终端电阻,一般来说都是120欧姆,实际上在设计的时候,也是两个60欧姆的电阻串起来,而总线上一般有两个120Ω的节点,基本上稍微知道点CAN总线的人都知道这个道理。 但是这两个终端电阻的具体作用是什么呢&#xf…

迅为视频教程 | RKNPU2 从入门到实践一套搞定!

迅为基于瑞芯微RK3568和RK3588处理器设计开发的两款开发板都自带NPU,RK3568自带1T算力的NPU、RK3588自带6T算力的NPU,且这两款开发板使用的都是RKNPU2。 (RKNPU发展历程) RKNPU2较RKNPU1有较大的提升,但市面…

Unity核心9——3D动画

一、3D 动画的使用 ​ 使用导入的 3D 动画: 将模型拖入场景中为模型对象添加 Animator 脚本为其创建 Animator Controller 动画控制器(状态机)将想要使用的相关动作,拖入 Animator Controller 动画控制器(状态机&…

Java:时间日期类

文章目录 DateCalendarDate/Time APILocalDateLocalTimeLocalDateTimeZonedDateTime 功能获取标准时间 参考文献 Date 同样位于java.util包下。 在java中,获取时间最简单的方式就是直接实例化Date类。 以自定义格式,取当前的时间日期: Da…

渗透测试入门指南之小白该如何学习渗透?

前言: 内容都是精华,如果想要入安全的行,强烈建议仔细阅读。 目录: 渗透测试是什么? 学习渗透测试的战略方针是什么? 学习渗透测试的具体方法是什么? 遇到的各种疑难杂症怎么解决&#xf…

践行公益担当 | 关爱留守儿童,暖到“心理”

农民在中国各个时代都扮演着十分重要的角色,为中国的发展做出了卓越的贡献。随着经济的发展,农民为了改善生活而大规模的进城打工,“留守儿童”成为一个新的社会问题,开始在农村甚至部分城市出现。 全国“留守儿童”达6102.55万&…

从0到1精通自动化测试,pytest自动化测试框架,测试用例setup和teardown(三)

目录 一、前言 二、用例运行级别 三、函数式 1、setup_function / teardown_function 2、setup_module / teardown_module 四、类和方法 五、函数和类混合 一、前言 学过 unittest 的都知道里面用前置和后置 setup 和 teardown 非常好用,在每次用例开始前和…

计算机组成原理-复习大纲(期末版)

目录 第一章 计算机系统概论 1.1 冯诺依曼型计算机 1.2 计算机的硬件组成 第二章 运算方法和运算器 2.1 ieee754标准、32位浮点数 2.2 补码运算 2.3 运算器的基本结构形式 第三章 存储系统 3.1 主存与cache的地址映射 3.1.1 全相联映射方式 3.1.2 直接映射方式 3.1.3 组相…

全网最细,web自动化测试实战场景(滚动元素的滚动操作)直接上干g货......

前言 使用 selenium 进行 web 自动化测试对我们来说是个常规操作。用了很多次后,我们经常会抱怨 selenium 封装的操作实在是太少了。 比如说 selenium 没有对页面的滚动提供丰富 API , 有的只有一个孤零零的 location_once_scrolled_into_view 方法,把…

css 解决多张图片显示时出现的空白间隙问题

1、出现的间隙 在后端设置富文本时,添加了多张图片,但是到前台展示时,每2张图片直接都会多出一个间隙; 2、空白间隙产生的原因 在网上查阅资料时,发现是由于图片设置了display: inline-block;属性,使图…