私はC++Qtデスクトップアプリケーションを書いています。
トレイアイコンを作成せずに、QtでSkype = likeの通知を表示することは可能ですか?
私が見つけたすべての通知参照には、作成したくないトレイアイコンが必要です。
通知には、アプリケーションが開かれたときと最小化されたときに表示される必要があります。
私はC++Qtデスクトップアプリケーションを書いています。
トレイアイコンを作成せずに、QtでSkype = likeの通知を表示することは可能ですか?
私が見つけたすべての通知参照には、作成したくないトレイアイコンが必要です。
通知には、アプリケーションが開かれたときと最小化されたときに表示される必要があります。
更新:これは最近のバージョンのQtでは機能していないようです。この作業を行うために私が見つけた回避策は、QSystemTrayIconを作成した後、次のようにすることでした。
show()
showMessage
hide()
これは私にとっては問題なく機能します。
作成しますQSystemTrayIcon
が、決して呼び出さないshow()
でください。次に、を使用QSystemTrayIcon::showMessage
してポップアップを表示できます。
ポップアップクラスを作成し、常にトップフラグを付けてデスクトップのどこかに表示します。通知はウィジェットの場合もあります
少し遅れますが、このライブラリに興味があるかもしれません https://github.com/Snorenotify/Snorenotify/
Snorenotifyは、マルチプラットフォームのQt通知フレームワークです。プラグインシステムを使用すると、Windows、Unix、Macでさまざまな通知システムを使用して通知を作成できます。
OPと同様の問題がありました(しかしPythonで!!)、ロマーリオの答えは私が望んでいたものの半分に到達しました。
私のシナリオでは、ロックファイルを介して1つだけが生きていることを強制するsys-trayツールがあります。ただし、ユーザーからのフィードバックでは、既に開いているときに起動しようとすると、何らかのフィードバックを提供するように求められました。
私が見つけたのはWindowsでした-Romariosの答えはアイコンがシステムトレイに残っていることを導きます-それsetVisible(False)
より前に呼び出すshow()
と、アイコンがシステムトレイに表示/蓄積されるのを防ぎます:)
私の完全なサンプルは
class SimpleNotifier(QtWidgets.QWidget):
def notify_running(self):
tray_icon = QtGui.QIcon(Params.TRAY_ICON)
self.setIcon(tray_icon)
self.setVisible(False)
self.show()
self.showMessage("Hi User", "Application already inside your sys-tray", QtGui.QIcon(Params.TRAY_ICON))
def notify():
app = QtWidgets.QApplication(sys.argv)
notify = HUBController.SimpleNotifier()
notify.notify_running()
app.exit()
notify()
そして、はい、私はこの投稿をするためだけに何年も潜んでいた後、アカウントにサインアップしました::)