1

我正在尝试部署在 QT Creator 中制作的 QT 应用程序,该应用程序在关闭时会返回到系统托盘。

我已经制作了一个 svg 托盘图标,当我从 QT Creator 运行它时,无论是在窗口 7 下的调试模式还是发布模式下,都会显示托盘图标,但是当我将所有内容复制到另一个目录以从中制作可分发的存档时,托盘图标不再显示。

当然,我已经在寻找解决方案,但我找到的所有东西,我都做了。

所以我有什么:

项目根目录中的trayicon.svg 文件

  • 创建 qrc 文件,将 trayicon.svg 添加到资源文件根目录中
  • 在项目 .pro 文件中:RESOURCES += resources.qrc
  • 将二进制 + 必要的 dll 复制到目标目录
  • 将 QT 插件 imageformats/* 复制到目标目录 imageformats
  • 添加 QApplication a(argc, argv); a.addLibraryPath(a.applicationDirPath()); 到 main.cpp

这就是我到目前为止找到的所有东西,但系统托盘图标仍然没有出现

我错过了什么?

(顺便说一下,当前的 qt 4.8 + 当前的 qtcreator)

@netrom

MainWindow 中的代码: QMainWindow 构造函数:

trayIcon = new QSystemTrayIcon(this);
showAction = new QAction(tr("&Show"), this);
connect(showAction, SIGNAL(triggered()), this, SLOT(show()));
quitAction = new QAction(tr("&Quit"), this);
connect(quitAction, SIGNAL(triggered()), qApp, SLOT(quit()));
trayIconMenu = new QMenu(this);
trayIconMenu->addAction(showAction);
trayIconMenu->addSeparator();
trayIconMenu->addAction(quitAction);
trayIcon->setContextMenu(trayIconMenu);
connect(trayIcon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(iconActivated(QSystemTrayIcon::ActivationReason)));
trayIcon->setIcon(QIcon(":trayicon.svg"));
trayIcon->show();
4

1 回答 1

4
  1. 在您的应用程序目录中创建 iconegines 目录(例如:c:\MyApp\iconengines)。
  2. 将 qsvgicon.dll 从 qt 插件目录(在我的例子中是 c:\qt\5.4\mingw491_32\plugins\iconengines\qsvgicon.dll)复制到这个新目录(例如:c:\MyApp\iconengines\qsvgicon.dll)。
  3. 将 QtSvg.dll 从 Qt bin 目录(在我的例子中是 c:\qt\5.4\mingw491_32\bin\Qt5Svg.dll)复制到您的应用程序目录(例如:c:\MyApp\Qt5Svg.dll)。

PS我知道我迟到了,这个答案适用于那些将谷歌搜索同样问题的人。

于 2015-11-27T05:20:03.583 回答