功能描述:
设置了系统托盘的图标和右键的部分功能,设置了软件的图标,通知功能
1、使用的类
QSystemTrayIcon:用来设置托盘图标
QMenu:鼠标右键的菜单容器
QAction:菜单子项
2、核心代码
1、设置软件图标(Windows平台下)*.pro文件:
添加语句:RC_ICONS = hello.ico
注:图标具体文件位置可使用相对路径 " ./ "来表示
2、声明需要的类代码
1、MainWindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QWidget>
#include <QSystemTrayIcon>
#include <QIcon>
#include <QMenu>
namespace Ui {
class MainWindow;
}
class MainWindow : public QWidget
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
QSystemTrayIcon *stystemIcon;
public slots:
void send();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
2、MainWindow.cpp
#include "MainWindow.h"
#include "ui_MainWindow.h"
MainWindow::MainWindow(QWidget *parent) :
QWidget(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QMenu *menu = new QMenu("hello");
QAction *actionClose = new QAction("关闭");
QAction* actionMax = new QAction("最大化");
QAction* actionMin = new QAction("最小化");
menu->addAction("open");
menu->addAction(actionMax);
menu->addAction(actionMin);
menu->addAction(actionClose);
stystemIcon = new QSystemTrayIcon(QIcon(tr(":/hello")), this);
stystemIcon->setToolTip("helloewqrr");
stystemIcon->setContextMenu(menu);
connect(actionClose, &QAction::triggered, this, &MainWindow::close);
connect(actionMax, &QAction::triggered, this, &MainWindow::showMaximized);
connect(actionMin, &QAction::triggered, this, &MainWindow::showMinimized);
connect(ui->pushButton, &QPushButton::clicked, this, &MainWindow::send);
stystemIcon->show();
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::send()
{
stystemIcon->showMessage(tr("提示"), "你点击了这个按钮!", QIcon(tr(":/hello")), 10000);
}
效果:
1、正常情况:
2、鼠标右键
3、点击按钮