QT 自定义最小化到托盘

#include <QtWidgets/QWidget>
#include <qboxlayout.h>
#include <qpushbutton.h>
#include <QSystemTrayIcon>
#include <QMenu>
#include <QAction>
//#pragma execution_character_set("utf-8");

class assistant : public QWidget
{
    Q_OBJECT

public:
    assistant();
    ~assistant();


public:


    void createActions();
    void createMenu();
    void on_min_clicked();
    void slot_Widget_minimum();
private slots:
    
    void on_activatedSysTrayIcon(QSystemTrayIcon::ActivationReason reason);
    void on_showMainAction();
    void on_exitAppAction();

private:
    //Ui::assistantClass ui;

    QSystemTrayIcon *mSysTrayIcon=nullptr;
    QMenu *mMenu = nullptr;
    QAction *mShowMainAction = nullptr;
    QAction *mExitAppAction = nullptr;
};

#endif // ASSISTANT_H

 

 

#include "assistant.h"

#include <QIcon>

assistant::assistant()

{

 


}

assistant::~assistant()
{

}

 

 


void assistant::on_min_clicked()
{
    //隐藏主窗口
    this->hide();

    //新建QSystemTrayIcon对象
    mSysTrayIcon = new QSystemTrayIcon(this);
    //新建托盘要显示的icon
    QIcon icon = QIcon(":/assistant/Resources/test/question.png");
    //将icon设到QSystemTrayIcon对象中
    mSysTrayIcon->setIcon(icon);
    //当鼠标移动到托盘上的图标时,会显示此处设置的内容
    mSysTrayIcon->setToolTip(QString::fromLocal8Bit("测试系统托盘图标"));
    //给QSystemTrayIcon添加槽函数
    connect(mSysTrayIcon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(on_activatedSysTrayIcon(QSystemTrayIcon::ActivationReason)));

    //建立托盘操作的菜单
    createActions();
    createMenu();
    //在系统托盘显示此对象
    mSysTrayIcon->show();
}

void assistant::slot_Widget_minimum()
{
    if (this->isHidden())
    {
        return;
    }

    if (mSysTrayIcon == NULL)
    {
        on_min_clicked();
    }
    else
    {
        this->hide();

    }
}

void assistant::on_activatedSysTrayIcon(QSystemTrayIcon::ActivationReason reason)
{
    switch (reason) {
    case QSystemTrayIcon::Trigger:
        mSysTrayIcon->showMessage(QObject::trUtf8("Message Title"),
            QString::fromLocal8Bit("欢迎使用导航"),
            QSystemTrayIcon::Information,
            1000);
        break;
    case QSystemTrayIcon::DoubleClick:
        this->show();
        break;
    default:
        break;
    }
}

void assistant::createActions()
{
    mShowMainAction = new QAction(QString::fromLocal8Bit("显示"), this);
    connect(mShowMainAction, SIGNAL(triggered()), this, SLOT(on_showMainAction()));

    mExitAppAction = new QAction(QString::fromLocal8Bit("退出"), this);
    connect(mExitAppAction, SIGNAL(triggered()), this, SLOT(on_exitAppAction()));

}

void assistant::createMenu()
{
    mMenu = new QMenu(this);
    mMenu->addAction(mShowMainAction);

    mMenu->addSeparator();

    mMenu->addAction(mExitAppAction);

    mSysTrayIcon->setContextMenu(mMenu);
}

void assistant::on_showMainAction()
{
    this->show();
}

void assistant::on_exitAppAction()
{
    exit(0);
}
 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值