1、概述
源码放在文章末尾

托盘图标控件

    1. 可设置托盘图标对应所属主窗体。
    1. 可设置托盘图标。
    1. 可设置提示信息。
    1. 自带右键菜单。

下面是demo演示:
《QT实用小工具·二十九》托盘图标控件-LMLPHP

项目部分代码如下:

#ifndef TRAYICON_H
#define TRAYICON_H

/**
 * 托盘图标控件
 * 1. 可设置托盘图标对应所属主窗体。
 * 2. 可设置托盘图标。
 * 3. 可设置提示信息。
 * 4. 自带右键菜单。
 */

#include <QObject>
#include <QSystemTrayIcon>

class QMenu;

#ifdef quc
class Q_DECL_EXPORT TrayIcon : public QObject
#else
class TrayIcon : public QObject
#endif

{
    Q_OBJECT
public:
    static TrayIcon *Instance();
    explicit TrayIcon(QObject *parent = 0);

private:
    static QScopedPointer<TrayIcon> self;
    QWidget *mainWidget;            //对应所属主窗体
    QSystemTrayIcon *trayIcon;      //托盘对象
    QMenu *menu;                    //右键菜单
    bool exitDirect;                //是否直接退出

private slots:
    void iconIsActived(QSystemTrayIcon::ActivationReason reason);

public:
    //设置是否直接退出,如果不是直接退出则发送信号给主界面
    void setExitDirect(bool exitDirect);

    //设置所属主窗体
    void setMainWidget(QWidget *mainWidget);    

    //显示消息
    void showMessage(const QString &title, const QString &msg,
                     QSystemTrayIcon::MessageIcon icon = QSystemTrayIcon::Information, int msecs = 5000);

    //设置图标
    void setIcon(const QString &strIcon);
    //设置提示信息
    void setToolTip(const QString &tip);

    //获取和设置是否可见
    bool getVisible() const;
    void setVisible(bool visible);

public Q_SLOTS:
    //退出所有
    void closeAll();
    //显示主窗体
    void showMainWidget();

Q_SIGNALS:
    void trayIconExit();
};

#endif // TRAYICON_H

源码下载

04-19 00:26