我使用的是 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 似乎有问题,因为它不再使用托盘图标而只使用指示器。因此,有一个程序使用托盘图标并将它们转换为指标。但是,然后指标的功能就消失了。我知道这是系统的错,因为相同的程序,在相同的代码下,在 Lubuntu 12.04 和 LXDE 桌面下完美运行。
我为此责怪Ubuntu。sni-qt 包没有很好地从托盘图标迁移到指示器,前提是指示器可以在点击、滚轮等上进行交互。真可惜!这个问题有什么解决办法吗?
我的赏金结束了,所以如果有人可以解决这个问题,我将不胜感激!