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

相关推荐
wiseyao12192 小时前
Qt信号和槽
qt·信号·
AI+程序员在路上8 小时前
QT实现升级进度条页面
开发语言·qt
Fairy_sevenseven9 小时前
【二十五】【QT开发应用】无边窗窗口鼠标拖动窗口移动,重写mousePressEvent,mouseMoveEvent函数
开发语言·qt·计算机外设
martian66510 小时前
QT开发: Qt 框架中字符串核心类QString详解
开发语言·c++·qt
我会说:明天更快乐10 小时前
[项目:微服务即时通讯系统客户端(基于C++QT)]三,左侧界面搭建
c++·qt·微服务
躺着要饭12 小时前
Qt 注册表操作
开发语言·qt
弘毅_Hao19 小时前
创建Application(Qt)模板项目时的 Base class选择
qt·base class
零点零一1 天前
如何在堆和栈上分别创建一个`QObject`子类对象
qt
灵嗅1 天前
python qt5 常用
开发语言·qt
江凡心1 天前
Qt 每日面试题 -2
开发语言·数据库·qt·面试