C++ QT 实现任务栏图标闪烁功能 - 详细教程
在 C++ QT 中,可以通过设置 QSystemTrayIcon 的 icon 和 contextMenu 属性来实现任务栏图标闪烁功能。具体步骤如下:
- 创建
QSystemTrayIcon对象,并设置其icon和contextMenu属性。
QSystemTrayIcon *trayIcon = new QSystemTrayIcon(this);
trayIcon->setIcon(QIcon('icon.png'));
trayIcon->setContextMenu(trayMenu);
- 创建
QTimer对象,用于控制闪烁。
QTimer *timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(blinkIcon()));
- 实现闪烁函数,利用
QSystemTrayIcon的setVisible函数来控制图标的显示和隐藏。
void MainWindow::blinkIcon()
{
if(trayIcon->isVisible())
trayIcon->setVisible(false);
else
trayIcon->setVisible(true);
}
- 在需要闪烁的地方启动定时器。
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
原文地址: https://www.cveoy.top/t/topic/ojnv 著作权归作者所有。请勿转载和采集!