私のこの古いスレッドがあります: Qt/C++で作業インジケータを作成するにはどうすればよいですか? ここで、アプリケーション用のUbuntuでトレイアイコンを作成するためにQSystemTrayライブラリを使用することが提案されました。
Sniqtは、残りを処理するプログラムです。既知のように、Ubuntuはトレイアイコンを削除しました。代わりに、インジケータとインジケータのみを使用するようになりました。 SniqtはQtトレイアイコンを動作インジケータに変換します。
問題は、それがあまりまともな変換をしないことです。シングルクリック、ミドルクリックなどのアクションは機能しませんが、トレイアイコンをサポートするシステムでは機能します。
これらのアクションを元に戻す方法はありますか? QSystemTrayアイコンを使用しても、Ubuntuでこれらの面白い(そして非常に役立つ)アクションを実行できますか?
先ほど話した他のスレッド(GTKライブラリを使用して機能するインジケーターを作成し、クラッシュを防ぐ方法)への答えも知りたいです。
Sniqtバグのリンク: https://bugs.launchpad.net/sni-qt/+bug/1027652
Qtは、少なくともUbuntu Unityでは、「アクティブ化された」信号を持っている場合でも、このことをサポートしていないようです。したがって、GTKと通常のトレイアイコンを使用することをお勧めします。Qtには代替手段がありません。これについての詳細は、Qtの開発者に問い合わせてください。
Unityは、選択により、「まともなトレイアイコン」と呼ばれるものをサポートしません。それはインジケータか何もない。そこからいくつかのオプションがあります:
制限されたインジケーター機能で間に合わせます。標準のQSystemTray.setContextMenu()メソッドを使用して、インジケーターで使用されるメニューを設定できます。
システムトレイからアプリを完全に切り離します。同様に、デスクトップ上のフローティングアイコンに変更すると、God and Matthias Ettrichが意図したとおり、ミドルクリックと右クリックを受け入れることができます。これを行う方法の簡単な例をここで見つけることができます: http://kde-apps.org/content/show.php/KEyes?content=51493 (オプションで、Unityで実行していることを検出した場合、つまり$ DESKTOP_SESSIONが 'ubuntu'に設定されている場合にのみ、これを実行します。)
Unityがサポートされていないことを宣言します。これはあまり良い選択肢ではありません。
オプション1とオプション2のどちらを使用するかは、主にアプリケーションの動作に依存します。