多路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)中的单元格。通过重载该函数,可以控制单元格的外观和内容。

相关推荐
lqqjuly4 分钟前
视频理解与生成解析(Video Understanding & Generation)
深度学习·音视频
Deitymoon18 分钟前
RV1126——音视频开发环境搭建、固件烧录、网络调试、demo运行
音视频
西安同步高经理20 分钟前
国产音频频谱分析仪使用案例,多通道音频分析仪,音频频谱分析仪
大数据·人工智能·音视频
chenying99817923 分钟前
掩码扩散语音克隆:参考音频为什么会被噪声“污染“?
人工智能·音视频·语音合成
古道青阳42 分钟前
构建工业级短视频生成流水线:Playwright + FFmpeg 自动化指南
运维·自动化·音视频
夏夏夏果1 小时前
部署视频生成模型-美团LongCat-Video
ai·音视频
雪的季节1 小时前
Qt多窗口架构设计需求简介
开发语言·qt
jingshaoqi_ccc11 小时前
windows 10系统下QT的安装及在Visual studio中的扩展安装
windows·qt·visual studio
川冰ICE12 小时前
⑮ AI音乐与音频:工具详解与创作流程
人工智能·音视频
Starry-sky(jing)13 小时前
# Linux 下 Qt 应用无障碍自动化:记一次wx无人值守系统的架构演进
linux·qt·自动化