多路h265监控录放开发-(14)通过PaintCell自定义日历控件继承QCalendarWidget的XCalendar类

首先创建一个新类XCalendar继承QCalendarWidget类,然后在UI视图设计器中把日历提升为XCalendar,通过这个函数自己设置日历的样式

xcalendar.h

cpp 复制代码
#pragma once
#include <QCalendarWidget>
class XCalendar :public QCalendarWidget
{
public:
    XCalendar(QWidget* p);
    void paintCell(QPainter* painter,
        const QRect& rec,
        const QDate& date) const override;
};

xcalendar.cpp

cpp 复制代码
#include "xcalendar.h"
#include <QPainter>
XCalendar::XCalendar(QWidget* p) :QCalendarWidget(p)
{
        
}
void XCalendar::paintCell(QPainter* painter,
    const QRect& rec,
    const QDate& date) const
{
    //有视频的日期特殊显示
    //测试日期 4号
    if (date.day() != 4)
    {
        QCalendarWidget::paintCell(painter, rec, date);
        return;
    }



    auto font = painter->font();
    //设置4号日期的字体
    font.setPixelSize(30);//setFont的时候传入的参数,

    //选中状态刷背景色
    if (date == selectedDate())
    {
        painter->setBrush(QColor(118, 178, 224));//刷子蓝色颜色,任意填充将使用这个颜色
        painter->drawRect(rec);                 //绘制背景
    }
    painter->setFont(font);             //设置字体和颜色
    painter->setPen(QColor(255, 0, 0)); //字颜色
    painter->drawText(rec, Qt::AlignCenter,
        QString::number(date.day()));

}

paintCell 是一个虚函数,用于在 Qt 框架中自定义绘制日历部件(如 QCalendarWidget)中的单元格。通过重载该函数,可以控制单元格的外观和内容。

相关推荐
lhbweilai2 小时前
QT(了解各个控件和布局)上
数据库·qt
AI视频工具指南2 小时前
AI视频的声音和画面怎么配合?先分清谁在传递信息
人工智能·aigc·音视频
辰辰观影5 小时前
无广告播放器推荐来啦
音视频
TrueDei5 小时前
GStreamer 使用 valve 分别控制音视频流的暂停与恢复
音视频
一条破秋裤6 小时前
基于 Hi3516CV610 的立定跳远视频测量系统调研与实施方案
arm开发·音视频
2601_966827456 小时前
视频里的特效字幕怎么翻译?外挂字幕与AI字幕一键处理教程
音视频
八月的雨季 最後的冰吻7 小时前
音视频面试--延迟优化
面试·职场和发展·音视频
ShineWinsu7 小时前
对于Qt:QLabel常见属性的解析
c++·qt·面试·笔试·gui·标签·qlabel
智能直播8 小时前
MEDAI-W2_Tinyalsa音频_HDMI输出_CSDN文章
音视频·实时音视频·视频编解码
小徐不徐说8 小时前
数据库存储基础:理解表结构、主键、事务与 BLOB
开发语言·数据库·c++·qt·程序设计