我正在用Qt編寫一個應用程序,使用系統托盤。我已經使用示例中所示的QSystemTrayIcon類實現了系統托盤,但它與我的計算機上存在的其他系統托盤圖標沒有相同的行爲。例如,我在Ubuntu 12.04上安裝了Spotify,並顯示帶有下拉菜單的系統托盤圖標。使用我的應用程序,它顯示帶有上下文菜單的系統托盤圖標,這意味着您必須右鍵單擊它才能使菜單處於活動狀態。使用Spotify,所有需要完成的工作就是點擊圖標並顯示菜單。我能做些什麼來獲得Ubuntu中的原生系統托盤圖標?我很喜歡使用X11/Linux的特定代碼,而不是內置的Qt函數。非常感謝。系統托盤應用程序Linux Qt/C++
這裏是我的代碼:
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);
}
這將顯示菜單,但它只顯示上下文菜單,我想讓它顯示非上下文菜單。我認爲這可能與Unity有關,但我不是100%肯定的。 –
我會將您的答案標記爲正確的答案,但我仍然想知道如何綁定到Ubuntu的全局菜單系統。 Qt 4.8.1似乎沒有默認使用全局菜單系統,我無法找到設置來啓用它的構建。 –
'全球菜單系統'是什麼意思?菜單通常位於屏幕頂部ubuntu頂部左側的窗口中? – graphite