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

相关推荐
AI浩1 小时前
Cambrian-S:迈向视频中的空间超感知
人工智能·目标检测·计算机视觉·音视频
Jonathan Star2 小时前
JSON-RPC 2.0 详解
qt·rpc·json
一只爱学习的小鱼儿3 小时前
QT中3D的使用
开发语言·数据库·qt
微学AI3 小时前
华为CANN在智慧城市视频监控中的实践:端云协同的实时目标检测解决方案
华为·音视频·智慧城市·cann
Laravel技术社区3 小时前
php 读取视频流(mp4视频文件),快速读取视频解决方案(案例及配置)
开发语言·php·音视频
七十二计3 小时前
高效视频抽帧与文字识别(OCR)技术体系详解
ocr·音视频
FL16238631294 小时前
Qt自定义控件之仪表盘和水波纹圆形进度条的完整实现
开发语言·qt
Likeadust5 小时前
视频推拉流平台EasyDSS平台如何赋能无人机推流直播新纪元
音视频·无人机
ACP广源盛139246256736 小时前
GSV1201D(2201D)#ACP@DisplayPort 1.2 转 HDMI 1.4 转换器(带嵌入式 MCU)
单片机·嵌入式硬件·电脑·音视频
开始了码6 小时前
QT::对话框:字体对话框3
qt