Ubuntu 12.04 中的最小 QSystemTrayIcon 示例

Minimal QSystemTrayIcon example in Ubuntu 12.04

我正在研究如何使用 Ubuntu 12.04 构建和部署 Qt 应用程序。我正在使用我下载的 Qt 5.4.2 here。我安装在默认位置 ~/Qt5.4.2.

目前我想设置托盘图标。我的代码如下:

#include <QApplication>
#include <QDebug>
#include <QIcon>
#include <QSystemTrayIcon>

int main(int argc, char **argv)
{
    QApplication app(argc, argv);
    QSystemTrayIcon *trayIcon = new QSystemTrayIcon();
    qDebug() << trayIcon->isSystemTrayAvailable();
    trayIcon->setIcon(QIcon("heart.png"));
    trayIcon->show();
    return app.exec();
}

heart.png 来自 PyQt5 的 QSystemTrayIcon 示例,我从 here 得到它。我把它和源文件放在同一个目录下。

我使用以下命令构建了可执行文件。

~/Qt5.4.2/5.4/gcc_64/bin/qmake -config release
make

运行创建的文件显示托盘图标。

为了部署应用程序,我将以下文件复制到同一目录中。我从 ~/Qt5.4.2/5.4/gcc_64/lib:

得到它们
libicudata.so.53
libicui18n.so.53
libicuuc.so.53
libQt5Core.so.5
libQt5DBus.so.5
libQt5Gui.so.5
libQt5Widgets.so.5

我也复制了~/Qt5.4.2/5.4/gcc_64/plugins/platforms/libqxcb.so,放在了一个名为platforms的目录下。

我测试了添加一个qt.conf文件,但似乎没有效果。它的内容是

[Paths]
Prefix = .
Binaries = .

我将整个目录复制到虚拟机 运行 宁 Ubuntu 12.04 live CD。在 运行 导出二进制文件之前,我导出 LD_LIBRARY_PATH=. 以便它可以找到包含的 Qt 库。

遗憾的是,当程序在 VM 中 运行 时,托盘图标未显示。 qDebug 语句显示系统托盘可用。

提前致谢。

我通过编辑系统托盘白名单解决了这个问题:http://www.howtogeek.com/68119/how-to-bring-app-icons-back-into-unitys-system-tray/