我正在使用C++和Qt编写一个应用程序,利用了系统托盘。
我已经按照示例使用QSystemTrayIcon
类实现了系统托盘,但它的行为与我的计算机上存在的其他系统托盘图标不同。
例如,我在Ubuntu 12.04上安装了Spotify,它显示了一个带有下拉菜单的系统托盘图标。而我的应用程序则显示了一个带有上下文菜单的系统托盘图标,这意味着您必须右键单击才能激活菜单。
对于Spotify,只需单击图标即可显示菜单。
我该怎么做才能在Ubuntu中获得本地的系统托盘图标?
我可以使用特定的X11/Linux
代码,而不是内置的Qt函数。
以下是我的代码:
void MainWindow::closeEvent(QCloseEvent *event)
{
if (trayIcon->isVisible()) {
hide();
event->ignore();
}
}
void MainWindow::createActions()
{
restoreAction = new QAction(tr("&Show"), this);
connect(restoreAction, SIGNAL(triggered()), this, SLOT(show()));
quitAction = new QAction(tr("&Exit"), this);
connect(quitAction, SIGNAL(triggered()), qApp, SLOT(quit()));
}
void MainWindow::createTrayIcon()
{
trayIconMenu = new QMenu(this);
accountsMenu = trayIconMenu->addMenu(tr("Accounts"));
trayIconMenu->addSeparator();
trayIconMenu->addAction(restoreAction);
trayIconMenu->addSeparator();
trayIconMenu->addAction(quitAction);
trayIcon = new QSystemTrayIcon(this);
trayIcon->setContextMenu(trayIconMenu);
}