#ifndef TRAYICON_H
#define TRAYICON_H#include <QMenu>
#include <QObject>
// #include <QSystemTrayIcon>
#include <QtWidgets/QSystemTrayIcon>class TrayIcon : public QObject
{Q_OBJECT
public:explicit TrayIcon(QObject *parent = nullptr);void show();void createTrayMenu();signals:private:QSystemTrayIcon * m_tr;QMenu *m_trayMenu;
};#endif // TRAYICON_
#include "trayicon.h"
#include <QAction>TrayIcon::TrayIcon(QObject *parent): QObject{parent}
{m_tr = new QSystemTrayIcon(this);createTrayMenu();m_tr->setContextMenu(m_trayMenu);m_tr->setIcon(QIcon("trayIcon.png"));
}void TrayIcon::show()
{m_tr->show();m_tr->setToolTip("hello world2");
}void TrayIcon::createTrayMenu()
{m_trayMenu = new QMenu();QAction *showAction = new QAction(tr("147"), this);m_trayMenu->addAction(showAction);m_trayMenu->addSeparator();QAction *quitAction = new QAction(tr("258"), this);m_trayMenu->addAction(quitAction);
}
结论:qt的问题。正常是先调用setToolTip,最后调用show,hover图标时即可显示。Windows下setToolTip在show之后调用才能显示。
测试版本:Windows 11 专业版 24H2 26100.8037