【发布时间】:2015-10-02 16:00:52
【问题描述】:
我正在使用 Qt/C++ 创建我自己的应用程序,我希望它是跨平台的,到目前为止,它在 Qt 上运行良好,唯一的问题是托盘图标。
我创建了一个托盘图标并为其添加了一个菜单,这在 Windows 中可以正常工作,但在 Linux 中无法正常工作。我在两台计算机上测试我的应用程序并得到两个不同的响应。
在我的桌面 (Ubuntu 14.04) 中,托盘图标按预期出现在任务栏的右侧,但它没有向我显示菜单。在笔记本电脑(也是 Ubuntu 14.04)中,托盘图标出现在任务栏的左侧,但在这种情况下,当我双击图标时,它会显示菜单和消息。
我不知道是否有其他方法可以做到这一点,但这是我的代码。
if (QSystemTrayIcon::isSystemTrayAvailable())
{
//trayicon
trayIcon = new QSystemTrayIcon(this);
trayIcon->setIcon(QIcon(":/Imagenes/iconosPERFQ-23.png"));
trayIcon->setToolTip(tr("PerfQ Client"));
trayIcon->setVisible(true);
connect(trayIcon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)),
this, SLOT(iconActivated(QSystemTrayIcon::ActivationReason)));
//Menu
logoutAction = new QAction(tr("&Logout"), this);
trayIconMenu = new QMenu(this);
trayIconMenu->addAction(logoutAction);
// Add the menu to the trayicon
trayIcon->setContextMenu(trayIconMenu);
connect (logoutAction,SIGNAL(triggered()), this, SLOT(logout()));
}
以及托盘图标上激活信号的插槽
void Task::iconActivated(QSystemTrayIcon::ActivationReason reason)
{
switch (reason)
{
case QSystemTrayIcon::DoubleClick:
QMessageBox::information(this,"Double Click", "Double click has been press on trayicon");
break;
default:
;
}
}
【问题讨论】:
标签: c++ linux qt system-tray trayicon