我使用的是 Ubuntu 12.04,虽然我可以创建带有可用菜单的托盘图标,但我无法控制其操作:
trayIcon = new QSystemTrayIcon(this);
trayIcon->setIcon(QIcon(":/icons/Pictures/icon.png"));
trayIcon->setToolTip(QString("Hello there..."));
connect(trayIcon,SIGNAL(activated(QSystemTrayIcon::ActivationReason)),this,SLOT(clickSysTrayIcon(QSystemTrayIcon::ActivationReason)));
connect(this,SIGNAL(minimized()),this,SLOT(hide()),Qt::QueuedConnection);
QMenu *changer_menu = new QMenu;
Show_action = new QAction(tr("S&how"),this);
Show_action->setIconVisibleInMenu(true);
connect(Show_action, SIGNAL(triggered()), this, SLOT(showClicked()));
changer_menu->addAction(Show_action);
changer_menu->addSeparator();
Quit_action = new QAction(tr("&Quit"), this);
Quit_action->setIconVisibleInMenu(true);;
connect(Quit_action, SIGNAL(triggered()), this, SLOT(close_minimize()));
changer_menu->addAction(Quit_action);
trayIcon->setContextMenu(changer_menu);
trayIcon->show();
clickSysTrayIcon(QSystemTrayIcon::ActivationReason) 如下:
void MainWindow::clickSysTrayIcon(QSystemTrayIcon::ActivationReason reason)
{
//reason is a variable that holds the type of activation or click done on the icon tray
qDebug() << "I'm in!";
}
并且,在头文件中定义为:
private Q_SLOTS:
void clickSysTrayIcon(QSystemTrayIcon::ActivationReason reason);
然而,我无法得到“我在!”的感觉。要显示的消息。我试图让它通过左/右键单击、中键单击和鼠标滚轮来工作,但我从未看到此消息被输出。
怎么了?
编辑:似乎特定系统 Ubuntu 12.04 有问题,因为它不再使用托盘图标,而仅使用指示器。因此,有一个程序使用托盘图标并将它们转换为指示器。但是,这样一来指标的特征就消失了。我知道这应该归咎于系统,因为相同的程序,在相同的代码下,在具有 LXDE 桌面的 Lubuntu 12.04 下完美运行。
我把这归咎于 Ubuntu。 sni-qt 包没有很好地从托盘图标到指示器的迁移,假设指示器可以在点击、滚轮等上进行交互。这是一个耻辱!
这个问题有什么解决办法吗?
我的赏金结束了,所以如果有人可以解决这个问题,我将不胜感激!