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 パッケージは、トレイ アイコンからインジケーターへの移行をあまりうまく行っていません。インジケーターがクリックやローラーなどで相互作用できる場合は、残念です! この問題の解決策はありますか?
私の懸賞金は終わったので、問題に対処できる人がいればありがたいです!