Qt Systray图标无法实现

时间:2016-05-05 10:35:08

标签: qt systray

我有一个带按钮的窗口,当按下窗口时,它会将窗口隐藏到系统托盘中。

问题是没有显示系统托盘图标。 这是代码,我做错了什么?

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QSystemTrayIcon>
#include <QString>
#include <QPixmap>
#include <QIcon>
#include <QAction>
#include <QMenu>


MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    //setup tray icon
    QSystemTrayIcon *tray;
    QPixmap icon(":/pencil.png");
    QIcon trayIcon;

    tray= new QSystemTrayIcon(this);
    trayIcon= QIcon(icon);
    tray->setIcon(trayIcon);
    tray->setToolTip("ToolTip");

    //setup restore
    QAction *restoreAction;
    restoreAction = new QAction(QIcon(":/pencil.png"), "Restore", this);
    connect(restoreAction, SIGNAL(triggered()), this, SLOT(show()));

    QMenu *trayIconMenu;
    trayIconMenu = new QMenu(this);
    trayIconMenu->addAction(restoreAction);
    tray->setContextMenu(trayIconMenu);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_pushButton_clicked()
{
    this->hide();
}

我按下按钮,窗口被隐藏但没有出现系统托盘图标。 为什么呢?

1 个答案:

答案 0 :(得分:1)

我发现它......

我必须设置可见的真实托盘图标

trayIconMenu = new QMenu(this);
trayIconMenu->addAction(restoreAction);
tray->setContextMenu(trayIconMenu);

tray->setVisible(true);