システムトレイを利用するQtを使用してC++でアプリケーションを作成しています。例に示すように、QSystemTrayIconクラスを使用してシステムトレイを実装しましたが、コンピューターに存在する他のシステムトレイアイコンと同じ動作はしません。たとえば、Ubuntu 12.04にSpotifyをインストールすると、ドロップダウンメニュー付きのシステムトレイアイコンが表示されます。私のアプリケーションでは、コンテキストメニュー付きのシステムトレイアイコンが表示されます。つまり、メニューをアクティブにするには、右クリックする必要があります。Spotifyでは、アイコンをクリックするだけでメニューが表示されます。Ubuntuでネイティブシステムトレイアイコンを取得するにはどうすればよいですか?組み込みのQt関数ではなく、X11/Linux用の特定のコードを使用しても問題ありません。どうもありがとう。
これが私のコードです:
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);
}