借用了腾讯视频的ico图标

头文件
#include <QWidget>
class QAction;
class QMenu;
class QSystemTrayIcon;
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
QSystemTrayIcon *trayIcon = nullptr;
public slots:
void iconActivated(QSystemTrayIcon::ActivationReason reason);
protected:
void closeEvent(QCloseEvent *event);
};
源文件
#include <QMenu>
#include <QAction>
#include <QSystemTrayIcon>
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
setMinimumSize(600,400);
if (QSystemTrayIcon::isSystemTrayAvailable())
{
QAction *miniSizeAction = new QAction("最小化(&N)",this);
QAction * maxSizeAction = new QAction("最大化(&X)",this);
QAction * restoreWinAction = new QAction("还 原(&R)",this);
QAction *quitAction = new QAction("退出(&Q)",this);
connect(miniSizeAction,SIGNAL(triggered()),this,SLOT(hide()));
connect(maxSizeAction,SIGNAL(triggered()),this,SLOT(showMaximized()));
connect(restoreWinAction,SIGNAL(triggered()),this,SLOT(showNormal()));
connect(quitAction,SIGNAL(triggered()),qApp,SLOT(quit()));
QMenu * myMenu = new QMenu((QWidget*)QApplication::desktop());
myMenu->addAction(miniSizeAction);
myMenu->addAction(maxSizeAction);
myMenu->addAction(restoreWinAction);
myMenu->addSeparator();
myMenu->addAction(quitAction);
trayIcon = new QSystemTrayIcon(this);
trayIcon->setIcon(QIcon(":/image/label.ico"));
setWindowIcon(QIcon(":/image/label.ico"));
trayIcon->setToolTip("Qt托盘");
trayIcon->showMessage("Qt系统托盘","显示什么呢?",QSystemTrayIcon::Information,10000);
trayIcon->setContextMenu(myMenu);
trayIcon->show();
connect(trayIcon,SIGNAL(activated(QSystemTrayIcon::ActivationReason)),
this,SLOT(iconActivated(QSystemTrayIcon::ActivationReason)));
}
}
void Widget::iconActivated(QSystemTrayIcon::ActivationReason reason)
{
switch(reason)
{
case QSystemTrayIcon::Trigger:
case QSystemTrayIcon::DoubleClick:
showNormal();
break;
case QSystemTrayIcon::MiddleClick:
trayIcon->showMessage("Qt托盘图标","给点提示吧!",QSystemTrayIcon::Information,1000);
break;
default:
break;
}
}
void Widget::closeEvent(QCloseEvent *event)
{
if (trayIcon&&trayIcon->isVisible())
{
trayIcon->showMessage("Qt托盘","说点啥吧!",QSystemTrayIcon::Information,1000);
hide();
event->ignore();
}
else
event->accept();
}