QSystemTrayIcon和Windows8

时间:2013-09-09 21:12:50

标签: c++ windows qt

我正在编写应用程序并在托盘类中有奇怪的错误。在课堂上我使用QSystemTrayIcon喜欢

 tray = new QSystemTrayIcon(this);
 tray->setIcon(QIcon(":/gui/logo.png"));
 ...
 tray->show();

WinXPWindows7上,它正常运行,但未显示Windows 8图标

    qDebug()<<"System TRAY:"<< QSystemTrayIcon::isSystemTrayAvailable();// outputs true

我使用Qt5.1.1 MSVC 2012

2 个答案:

答案 0 :(得分:2)

系统托盘图标是否加载,我发现它更依赖于它是否可以加载文件类型。

您的部署环境中是否提供了相应的插件?

http://www.qtcentre.org/threads/43152-Deploying-Qt-Application-on-Windows-Load-JPG-Images-Problem

http://qt-project.org/doc/qt-4.8/deployment-windows.html

希望有所帮助。

更新:Qt 5.1 w / msvc 2012 Windows 8 Pro上QSystemTrayIcon的32位测试结果: 在库存UI表单项目中使用以下内容编译和构建测试应用程序, 以及mainwindow.cpp中的以下内容

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QSystemTrayIcon>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QSystemTrayIcon * sys = new QSystemTrayIcon(this);
//    sys->setIcon(QIcon("C:/Users/phyatt/Downloads/system-tray.png"));
    sys->setIcon(QIcon(":/gui/system-tray.png"));
    sys->show();
}

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

并且在exe旁边有这些依赖项,它运行得很好。

Qt 5.1 dependencies

screenshot

答案 1 :(得分:2)

我遇到了同样的问题,我从phyatt使用的解决方案是将 imageformats 文件夹复制到我的应用程序的插件文件夹中,现在它正常工作。 / p>