news 2026/4/23 12:50:32

基于 QT(C++)实现的(图形界面)日历

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于 QT(C++)实现的(图形界面)日历

日历

1 概要

1.1 简介

本篇设计文档主要讲述了计 52 班的吴启凌根据小学期第一周李国良老师所教的内容,来实现的程序 Calendar 的设计思路,架构,以及一些设计细节。

1.2 实现的功能

Calendar 实现了日历的基本功能以及一些附加功能,主要有

正确地按照公历显示日历。

能够添加、删除、修改事件序列,某个事件在设置时,能够按天,按周,按月重复发生;删除事件时,能删除可重复事件的单个或全部。

能够设置每一天的颜色。

能够与本地文件实现拖拽交互。当用户把文件拖到某一天上时,能够保存到 Calendar 所在的目录下,并在当天格子内显示文件名。双击某一天能够打开一个对话框,其中显示了该天上的所有文件,并且能够拖拽到本地保存。此外,还设计了一个按钮来打开和关闭拖拽交互。

能够使用配置文件,包括 XML 和 ini 文件来保存信息。其中,XML 用于保存事件和每天的颜色,ini 用于保存语言,是否打开拖拽交互的信息。信息能够通过 save 按钮保存,也可在关闭程序时自动保存。支持导入,导出 XML 文件。

可以对日历进行整体拖拽,并设置了一个按钮来固定、解锁界面,锁定后,日历不再响应鼠标动作,并且能将鼠标事件传递到桌面。

国际化:支持中文、英文两种模式。

2 系统架构

2.1 文件结构

Calendar 的代码根据界面分组,文件如下

Mycalendar 构建了日历的样式及其交互模式,Filesdialog 和 Listwidget 用于显示日期所储存的文件,以及提供拖拽功能,Scheduledialog 用于新建及编辑事件,Schedule 类用于储存事件,Schedulemanager 用于管理事件,而 Mainwindow 则作为各组件沟通的纽带。

2.2 组件分析

Schedule 类用于储存事件的描述,开始、结束日期、重复模式等信息。Schedulemanager 提供了对 Schedule 管理的接口,包括添加、编辑、删除事件,获取某天的事件列表或单个事件,以及获取全部事件。

Scheduledialog 用于向用户显示事件的描述、重复模式信息,同时接受用户的编辑。

Listwidget 重写了 QListWidget 的 mousePressEvent 事件处理函数,在用户对列表中的文件按下鼠标时,传递文件路径的信息。

Mycalendar 则是工程中较为重要的一个类,重写了父类的 dragEnterEvent 和 dropEvent 来处理鼠标拖入事件,并在鼠标拖入文件时,将文件复制到 Calendar 所在目录下,并显示在日期格子中。重写了 paintCell 来获取每个日期的外框的位置信息,以此来判断鼠标将文件拖到了哪一天内;以及在日期中显示文件名,设置日期颜色。重写了 resizeEvent 来重置 datepos 中储存的矩形信息,以免造成拖拽的误差。

Mainwindow 则是工程中的核心类,用于收集、处理、传递几乎所有的信息。三个 public slots 用于在三个事件按钮按下时,弹出窗口并收集事件信息;on_calendar_clicked 用于在鼠标点击 calendar 时,在列表框中刷新事件信息,以及在 colorbox,即颜色选择框内显示该天的颜色信息;on_actionLock_triggered 在 lock 按钮按下时,固定窗口并设置鼠标穿透;on_checkBox_toggled 用于读取是否开启文件拖拽按钮的信息;on_languageBox_currentTextChanged 用于设置语言;最后三个槽用于保存配置信息、导入 XML、导出 XML。

3 用户界面

3.1 主界面

界面如下图 1 所示,左半边区域为日历部分,中间为功能按钮,右边为事件显示区域。此外工具栏中为 lock 按钮,菜单栏中 Calendar 可以弹出下拉菜单。

如图 2,3,点击某天后,右侧列表框中会显示当天事件,用户可以点击 New 按钮来新建事件,或者可以点击列表框中的条目,再点击 Edit 或 Delete 按钮来编辑或删除事件,删除时,会出现确认对话框,三个选项分别对应删除单个事件、全部事件、取消删除。

在 color 标签下方的下拉框中,可以设置某天的颜色。

Language 下拉框可以设置语言,设置后需要重启才能生效。需要重新设置一下翻译文件加载的路径。

Enable drag 的复选框能够开启、关闭文件拖拽功能。

按 lock 按钮能够锁定日历,由于锁定后鼠标穿透,需要用快键键 Ctr+ L 来解锁。

在 Calendar 的下拉菜单栏中,save 能够保存设置,import XML 能导入事件、日期颜色设置,export XML 能够导出事件、日期颜色设置。

♻️ 资源

大小:1.12MB

➡️资源下载:https://download.csdn.net/download/s1t16/87404315

注:更多内容可关注微信公众号【神仙别闹】,如当前文章或代码侵犯了您的权益,请私信作者删除!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 6:47:01

不踩雷!AI论文网站 千笔ai写作 VS WPS AI,继续教育专属推荐!

随着人工智能技术的迅猛迭代与普及,AI辅助写作工具已逐步渗透到高校学术写作场景中,成为专科生、本科生、研究生完成毕业论文不可或缺的辅助手段。越来越多面临毕业论文压力的学生,开始依赖各类AI工具简化写作流程、提升创作效率。但与此同时…

作者头像 李华
网站建设 2026/4/23 6:46:05

AI智能分析系统在值班室的应用方案

目录 引言 一、方案背景与客户需求 方案背景 客户需求 二、AI智能分析系统方案说明 系统架构 前端设备 AI Box边缘计算设备 算法部署与应用 三、实施效果与优势 实施效果 方案优势 四、结论与展望 引言 随着企业安全管理要求的提升与智能化技术的广泛应用,值班室…

作者头像 李华
网站建设 2026/4/23 6:45:45

SOC工具包v3.0:从Bug Hunter到事件响应的实用指南

SOC工具包v3.0:BugHunter的事件响应建议 作者:Alican Kiraz 阅读时间:3分钟 发布日期:2020年4月3日 分享数:271 大家好,我尊敬的同事们以及未来将成为我同事的伙伴们。在本文中,我将以我初入行…

作者头像 李华
网站建设 2026/4/23 6:47:01

【2026最新收藏版】AI大模型企业落地6大核心场景,小白程序员必看!

在2026年数字化转型进入深水区的今天,企业早已告别“信息化”的基础阶段,全力冲刺“智能化”升级。传统数字化工具多局限于流程固化、数据记录的浅层应用,难以支撑企业高效创新与降本增效的核心需求。而新一代AI大模型的迭代升级,…

作者头像 李华
网站建设 2026/4/22 15:10:07

半导电材料电阻测试仪BEST-300C

半导电材料电阻测试仪BEST-300C:高精度测量与多功能应用半导电材料电阻测试仪BEST-300C 在当今科技飞速发展的时代,半导电材料在电子、能源、通信等多个领域发挥着关键作用。从半导体芯片到太阳能电池,从导电薄膜到金属涂层,这些…

作者头像 李华
网站建设 2026/4/23 8:21:31

2026年网站建设的六大核心原则体系

网站建设是一个集战略规划、视觉传达、技术实现、内容构建与运营管理于一体的综合性系统工程。它不仅仅是创建一个在线展示页面,更是构建一个能够支持业务目标、满足用户需求、承载品牌价值的数字生态系统。现代网站已从早期的静态信息发布平台,演进为支…

作者头像 李华