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

相关推荐
Lhan.zzZ6 小时前
QML 组件库:VS2022 + Qt 静态库方案
开发语言·c++·qt·visual studio
TechVoyager_82469 小时前
HDMI信号进来,音视频出去:IT66021FN的全链路解析
音视频·音视频处理·it66021·hdmi接收芯片·hdmi1.4b·硬件方案·音视频全链路
ValueHD12 小时前
视频会议终端是什么,有哪几种类型?
后端·音视频·视频编解码·腾讯会议
redfred12 小时前
HandBrake 使用教程:开源视频压缩工具 视频太大压缩 MKV转MP4 批量转码 硬件加速 Windows/macOS/Linux
windows·开源·音视频
老余说AI12 小时前
告别机械音与音画脱节:2026 AI视频翻译与配音工具深度测评与工程选型指南
人工智能·音视频·视频翻译·视频配音
阿童木写作12 小时前
自动智能抠图工具推荐:跨马翻译批量处理图片与视频字幕,跨境电商高效翻译
大数据·人工智能·python·音视频
乐橙开放平台13 小时前
把工地遮挡和掉线接进项目部:setMessageCallback 订 alarm 与 deviceStatus
笔记·后端·物联网·自动化·音视频·智能家居
skr爱码士13 小时前
15_国际化和本地化:tr()、ts 文件、QM 文件、多语言切换
c++·qt·ui·客户端
Quz14 小时前
QML 拖拽篇:看板拖拽与数字拼图
qt
长友cy15 小时前
Qt官方示例Application源码阅读
开发语言·qt