2017-07-17 2 views
1

QSystemTrayIconを使用してバルーンの情報を表示する小さなアプリケーションがあります。 WindowsとKDEでは問題なく動作しますが、Gnome FallbackとXFCEでは動作しません。QSystemTrayIcon:KDEおよびWindowsでは動作しますが、Gnome Fallback/XFCEでは動作しません。

enter image description here

そしてここでは、Gnomeのフォールバックでそれをクリックしたときに何が起こっているかである:ここでクリックされたとき、それはKDEでどのように見えるかであることは、マウスの左ボタンでクリックされたが、それは右のボタン、すなわちでクリックされたように振る舞います「終了」を示し、そして右ボタンでクリックしたとき、「概要」を示しています。すべてのDEのアイコンの仕事を作るための方法は

enter image description here

ありますか?

MyTray::MyTray(QObject *parent) : 
     QObject(parent) 
{ 
//.......... 
    menu.addAction(new QAction("Выход",this)); 
    connect(menu.actions()[0],SIGNAL(triggered()),this,SLOT(delete_itself())); 
    icn=QIcon(":new/prefix1/08-01.png"); 
    icon.setIcon(icn); 
    icon.setContextMenu(&menu); 
    connect(&icon,SIGNAL(activated(QSystemTrayIcon::ActivationReason)),this,SLOT(icon_clicked(QSystemTrayIcon::ActivationReason))); 
    icon.show(); 
//.......... 
} 
void MyTray::icon_clicked(QSystemTrayIcon::ActivationReason reason) 
{ 
    if(reason==QSystemTrayIcon::Trigger) 
    { 
     QString s; 
     for(int i=0;i<vec.count();i++) 
     { 
      s.append(vec[i].room); 
      s.append(vec[i].isOpen ? ": открыт" : ": закрыт"); 
      if(vec.count()-1>i) s.append("\n"); 
     } 
     QSystemTrayIcon::MessageIcon ic = QSystemTrayIcon::MessageIcon(QSystemTrayIcon::Information); 
     icon.showMessage("Состояние",s,ic,20000); 
    } 
} 
+0

これはバグである可能性があります。どのバージョンのQtを使用していますか? Qt 4を使用している場合は、4.8.7にアップデートしてみてください。可能であれば、Qt 5に移行することができれば、さらに5.6または5.9の最新リリースにアップグレードすることもできます。どちらもLTSリリースであり、現在サポートされているのはQtの唯一のバージョンです。 –

答えて

0

たぶん、あなたはevent filterを使用する必要がある、 それはあなたがイベントフィルタをインストールして、そこ

0

自分自身に答えるからマウスイベントを処理することができない:ここで

はコードです。 GNOMEとその派生物では、トレイアイコンのアクションはKDEと異なり、コンテキストメニューだけがサポートされています。このアイコンは、左クリックでも有効になります。パッケージsni-qtがあり、コンテキストメニューに「アクティブ化」ポイントを追加することができます。私は~/.config/sni-qt.confにこのパッケージをインストールして、コメントを追加しました:

[need-activate-action] 
itray 

itrayは私のアプリです。だから今は2つのマウスクリックで1つの代わりに私が望むことを行うことが可能です。

関連する問題