标题:Qt编写自定义控件65-光晕日历
作者:liudianwu
日期:2019-10-10 10:15
内容:
一、前言
操作系统的更新迭代速度非常快,基本上三五年就有个新版本出来,WIN10操作系统还是一个比较成功的系统,据说现在市场份额越来越大,XP的份额已经很小,WIN7的份额也在逐步减少,在最新的WIN10系统中,右下角有个日历控件,还是自带农历的,这个本地化做的蛮好的,鼠标移上去还有光晕背景效果,体验非常赏心悦目,于是打算用Qt也高仿一个。
本控件的技术难点有两个,一个是根据当前月份自动排列星期和日期,这个需要自动计算的,难点二是绘制光晕背景,需要用到painter中的图像叠加模式setCompositionMode,设置好图像叠加模式以后,可以将多个绘制重叠,按照设定的规则组合,比如将光晕背景绘制在背后。
二、实现的功能
* 1:可设置背景颜色
* 2:可设置光晕颜色
* 3:可设置文字颜色
* 4:可设置选中日期背景
* 5:光晕跟随鼠标移动
三、效果图

四、头文件代码
#ifndef SHADOWCALENDAR_H
#define SHADOWCALENDAR_H
/**
* 光晕日历控件 作者:雨田哥(QQ:3246214072) 整理:feiyangqingyun(QQ:517216493) 2019-10-07
* 1:可设置背景颜色
* 2:可设置光晕颜色
* 3:可设置文字颜色
* 4:可设置选中日期背景
* 5:光晕跟随鼠标移动
*/
#include
#include
#ifdef quc
#if (QT_VERSION < QT_VERSION_CHECK(5,7,0))
#include
#else
#include
#endif
class QDESIGNER_WIDGET_EXPORT ShadowCalendar : public QWidget
#else
class ShadowCalendar : public QWidget
#endif
{
Q_OBJECT
Q_PROPERTY(QColor bgColor READ getBgColor WRITE setBgColor)
Q_PROPERTY(QColor textColor READ getTextColor WRITE setTextColor)
Q_PROPERTY(QColor shadowColor READ getShadowColor WRITE setShadowColor)
Q_PROPERTY(QColor selectColor READ getSelectColor WRITE setSelectColor)
public:
struct DateItem {
int year;
&nb ..
#1 [九重水 10-10 11:04]
你这个不行。
到了最下面一行日历,还显示9格的光晕。认真点完善一下。没有就别显示了。
#2 回 九重水 的帖子 [雨田小老弟 10-10 11:47]
九重水:你这个不行。
到了最下面一行日历,还显示9格的光晕。认真点完善一下。没有就别显示了。 (2019-10-10 11:04)
你这个不行。
到了最下面一行日历,还显示9格的光晕。认真点完善一下。没有就别显示了。
#3 回 雨田小老弟 的帖子 [305750665 10-10 15:02]
雨田小老弟:你这个不行。
到了最下面一行日历,还显示9格的光晕。认真点完善一下。没有就别显示了。 (2019-10-10 11:47)
雨田小老弟来砸场子的?
#4 [15927174837 10-23 20:26]
为什么自定义控件做完后,自己使用一直报错没有头文件