Qt在任务栏图标和系统托盘图标上显示红点

在任务栏图标上显示红点

关键类:QWinTaskbarButton

cpp 复制代码
#include <QWinTaskbarButton>

QPointer<QWinTaskbarButton> taskbarBtn = nullptr;
if (!taskbarBtn) {
    taskbarBtn = new QWinTaskbarButton(window);
    taskbarBtn->setWindow(window->windowHandle());
}

if (checked) {
    QPixmap pixmap(10, 10);
    pixmap.fill(Qt::transparent);

    QPainter painter(&pixmap);
    painter.setRenderHint(QPainter::Antialiasing);
    painter.setPen(Qt::NoPen); // 不绘制边框
    painter.setBrush(Qt::red);
    painter.drawEllipse(2, 2, 8, 8);

    QIcon icon(pixmap);

    taskbarBtn->setOverlayIcon(icon);
}
else {
    taskbarBtn->clearOverlayIcon();
}

UI可以参考OBS录制开启。checked为true显示红点,false不显示红点。

使用QWinTaskbarButton::setOverlayIcon设置覆盖图标

在系统托盘上显示红点

关键类:QSystemTrayIcon

cpp 复制代码
    if (visible) {
        QPixmap pixmap;
        if (!pixmap.load(":/res/logo.png")) {
            qDebug() << "Failed to load icon from resource file.";
            return;
        }
        pixmap = pixmap.scaled(16, 16);
        QPainter painter(&pixmap);
        painter.setRenderHint(QPainter::Antialiasing);
        painter.setPen(Qt::NoPen); // 不绘制边框
        painter.setBrush(Qt::red);
        painter.drawEllipse(0, 8, 8, 8);
        QIcon icon(pixmap);
        setIcon(icon);
    }
    else {
        setIcon(QIcon(":/res/logo.png"));
    }

先将logo加载到QPixmap,再在QPixmap上用QPainter绘制红点。最后调用QSystemTrayIcon::setIcon

相关推荐
委婉待续3 小时前
Qt的学习(一)
开发语言·qt·学习
笨笨马甲3 小时前
Qt Quick Layout功能及架构
开发语言·qt
feiyangqingyun4 小时前
Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
c++·qt·udp·gb28181
jllws15 小时前
Qt学习及使用_第1部分_认识Qt---学习目的及技术准备
qt·c++框架
到点就困告5 小时前
海康工业相机SDK二次开发(VS+QT+海康SDK+C++)
数码相机·qt·海康
唐墨12317 小时前
android与Qt类比
android·开发语言·qt
道剑剑非道18 小时前
QT开发技术【ffmpeg + QAudioOutput】音乐播放器 完善
开发语言·qt·ffmpeg
不惑_19 小时前
用 PyQt5 打造一个可视化 JSON 数据解析工具
开发语言·qt·json
誰能久伴不乏1 天前
Qt 开发中的父类与父对象的区别和父对象传递:如何选择 `QWidget` 或 `QObject`?
java·开发语言·qt
誰能久伴不乏1 天前
理解继承与组合的本质:Qt 项目中的设计选择指南
开发语言·qt