QSystemTrayIcon 和 Windows8

Posted

技术标签:

【中文标题】QSystemTrayIcon 和 Windows8【英文标题】:QSystemTrayIcon and Windows8 【发布时间】:2013-09-09 21:12:49 【问题描述】:

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

 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

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案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 32bit QSystemTrayIcon 在 Windows 8 Pro 上的测试结果: 在股票 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 旁边的这些依赖项,它运行得很好。

【讨论】:

我用的是png图标,托盘不仅不显示而且根本没有出现 我尝试在 Windows 8、Qt 4.8.4 中重新创建您的错误,但对我来说没有错误。 我使用 Qt5.1.1 MSVC 2012 您尝试过 Qt SysTray 示例吗? qt-project.org/doc/qt-4.8/desktop-systray.html 它应该包含在 Qt 库中。或者您可以从演示程序中启动它。 我认为是Qt5的bug。

以上是关于QSystemTrayIcon 和 Windows8的主要内容,如果未能解决你的问题,请参考以下文章

QSystemTrayIcon 未显示

如何捕捉 QSystemTrayIcon 的 MouseHover 事件?

有啥方法可以通过 Qt Designer 添加 QSystemTrayIcon

QSystemTrayIcon 处理左右分别点击?

QT之Qml使用QSystemTrayIcon实现系统托盘

如何使用QSystemTrayIcon区分左右键单击