在 C++ QT 中,可以通过设置 QSystemTrayIconiconcontextMenu 属性来实现任务栏图标闪烁功能。具体步骤如下:

  1. 创建 QSystemTrayIcon 对象,并设置其 iconcontextMenu 属性。
QSystemTrayIcon *trayIcon = new QSystemTrayIcon(this);
trayIcon->setIcon(QIcon('icon.png'));
trayIcon->setContextMenu(trayMenu);
  1. 创建 QTimer 对象,用于控制闪烁。
QTimer *timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(blinkIcon()));
  1. 实现闪烁函数,利用 QSystemTrayIconsetVisible 函数来控制图标的显示和隐藏。
void MainWindow::blinkIcon()
{
    if(trayIcon->isVisible())
        trayIcon->setVisible(false);
    else
        trayIcon->setVisible(true);
}
  1. 在需要闪烁的地方启动定时器。
timer->start(500); // 每 500 毫秒闪烁一次

完整代码如下:

#include <QtWidgets>

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);

private slots:
    void blinkIcon();

private:
    QSystemTrayIcon *trayIcon;
    QMenu *trayMenu;
    QTimer *timer;
};

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    trayIcon = new QSystemTrayIcon(this);
    trayIcon->setIcon(QIcon('icon.png'));

    trayMenu = new QMenu(this);
    trayMenu->addAction('Action 1');
    trayMenu->addAction('Action 2');
    trayIcon->setContextMenu(trayMenu);

    timer = new QTimer(this);
    connect(timer, SIGNAL(timeout()), this, SLOT(blinkIcon()));
    timer->start(500);

    trayIcon->show();
}

void MainWindow::blinkIcon()
{
    if(trayIcon->isVisible())
        trayIcon->setVisible(false);
    else
        trayIcon->setVisible(true);
}

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}

#include "main.moc"

注意:如果要在 Windows 系统下实现任务栏图标闪烁,需要在 .pro 文件中添加如下语句:

win32: LIBS += -luser32
C++ QT 实现任务栏图标闪烁功能 - 详细教程

原文地址: https://www.cveoy.top/t/topic/ojnv 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录