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();
在WinXP
和Windows7
上工作正常,但在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 的 MouseHover 事件?