C++ QT 实现任务栏图标闪烁功能 - 详细教程
要实现任务栏图标闪烁功能,可以使用 QSystemTrayIcon 类和 QTimer 类。
首先,在 Qt 的主窗口类中,创建一个 QSystemTrayIcon 对象:
QSystemTrayIcon *trayIcon = new QSystemTrayIcon(this);
然后,设置任务栏图标的图标:
trayIcon->setIcon(QIcon(':/images/icon.png'));
接着,定义一个 QTimer 对象,用于定时闪烁任务栏图标:
QTimer *timer = new QTimer(this);
设置定时器的时间间隔:
timer->setInterval(500); // 闪烁间隔为 500ms
然后,定义一个成员变量用于记录任务栏图标是否正在闪烁:
bool isBlinking = false;
接下来,定义一个槽函数,用于实现任务栏图标的闪烁:
void blinkTrayIcon()
{
if (isBlinking) {
trayIcon->setVisible(!trayIcon->isVisible());
} else {
trayIcon->setVisible(true);
}
}
最后,在需要闪烁任务栏图标的地方,启动定时器并设置任务栏图标为可见状态:
isBlinking = true;
timer->start();
trayIcon->setVisible(true);
在定时器的 timeout() 信号中调用闪烁槽函数:
connect(timer, &QTimer::timeout, this, &MainWindow::blinkTrayIcon);
当任务完成后,停止定时器并设置任务栏图标为可见状态:
isBlinking = false;
timer->stop();
trayIcon->setVisible(true);
完整的代码如下:
MainWindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QSystemTrayIcon>
#include <QTimer>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
void blinkTrayIcon();
private:
Ui::MainWindow *ui;
QSystemTrayIcon *trayIcon;
QTimer *timer;
bool isBlinking;
};
#endif // MAINWINDOW_H
MainWindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
trayIcon = new QSystemTrayIcon(this);
trayIcon->setIcon(QIcon(':/images/icon.png'));
timer = new QTimer(this);
timer->setInterval(500);
isBlinking = false;
connect(timer, &QTimer::timeout, this, &MainWindow::blinkTrayIcon);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::blinkTrayIcon()
{
if (isBlinking) {
trayIcon->setVisible(!trayIcon->isVisible());
} else {
trayIcon->setVisible(true);
}
}
void MainWindow::on_pushButton_clicked()
{
isBlinking = true;
timer->start();
trayIcon->setVisible(true);
}
void MainWindow::on_pushButton_2_clicked()
{
isBlinking = false;
timer->stop();
trayIcon->setVisible(true);
}
在 MainWindow.ui 中添加两个 QPushButton 控件,分别命名为 pushButton 和 pushButton_2。
最后,编译运行程序,点击 pushButton 按钮,任务栏图标开始闪烁,点击 pushButton_2 按钮,任务栏图标停止闪烁。
原文地址: https://www.cveoy.top/t/topic/ojny 著作权归作者所有。请勿转载和采集!