web-dev-qa-db-ja.com

sniqtにすべてのトレイ機能を認識させる(またはQtで作業インジケーターを作成する)

私のこの古いスレッドがあります: Qt/C++で作業インジケータを作成するにはどうすればよいですか? ここで、アプリケーション用のUbuntuでトレイアイコンを作成するためにQSystemTrayライブラリを使用することが提案されました。

Sniqtは、残りを処理するプログラムです。既知のように、Ubuntuはトレイアイコンを削除しました。代わりに、インジケータとインジケータのみを使用するようになりました。 SniqtはQtトレイアイコンを動作インジケータに変換します。

問題は、それがあまりまともな変換をしないことです。シングルクリック、ミドルクリックなどのアクションは機能しませんが、トレイアイコンをサポートするシステムでは機能します。

これらのアクションを元に戻す方法はありますか? QSystemTrayアイコンを使用しても、Ubuntuでこれらの面白い(そして非常に役立つ)アクションを実行できますか?

先ほど話した他のスレッド(GTKライブラリを使用して機能するインジケーターを作成し、クラッシュを防ぐ方法)への答えも知りたいです。

Sniqtバグのリンク: https://bugs.launchpad.net/sni-qt/+bug/1027652

9
hytromo

Qtは、少なくともUbuntu Unityでは、「アクティブ化された」信号を持っている場合でも、このことをサポートしていないようです。したがって、GTKと通常のトレイアイコンを使用することをお勧めします。Qtには代替手段がありません。これについての詳細は、Qtの開発者に問い合わせてください。

0
Ceppo93

Unityは、選択により、「まともなトレイアイコン」と呼ばれるものをサポートしません。それはインジケータか何もない。そこからいくつかのオプションがあります:

  • 制限されたインジケーター機能で間に合わせます。標準のQSystemTray.setContextMenu()メソッドを使用して、インジケーターで使用されるメニューを設定できます。

  • システムトレイからアプリを完全に切り離します。同様に、デスクトップ上のフローティングアイコンに変更すると、God and Matthias Ettrichが意図したとおり、ミドルクリックと右クリックを受け入れることができます。これを行う方法の簡単な例をここで見つけることができます: http://kde-apps.org/content/show.php/KEyes?content=51493 (オプションで、Unityで実行していることを検出した場合、つまり$ DESKTOP_SESSIONが 'ubuntu'に設定されている場合にのみ、これを実行します。)

  • Unityがサポートされていないことを宣言します。これはあまり良い選択肢ではありません。

オプション1とオプション2のどちらを使用するかは、主にアプリケーションの動作に依存します。

1
Balinares