Skypeのように通常はトレイに最小化されたQtアプリがあります。ユーザーがトレイアイコンをクリックすると、アプリウィンドウが表示されます。トレイに最小化されたQtアプリ、フォーカス盗難防止に問題があります。
これは、LinuxおよびWinXPで正常に動作します。しかし、Win7では、アプリケーションウィンドウが表示されますが、現在アクティブなウィンドウがQt Creatorであるか、私のアプリケーションであった(トレイに最小化される前)場合を除き、他のウィンドウの下にとどまります。だから、フォーカス盗難防止と何か関係があるはずです。
SkypeがQtで書かれていることは知っていますが、そのような問題はないので、修正する必要があります。
void MainWindow::toggleVisible(QSystemTrayIcon::ActivationReason reason) { if (QSystemTrayIcon::Trigger == reason) setVisible(!isVisible()); }
[編集] それは私がactivateWindowを呼び出す必要があったが判明:
は、ここに私のコードです。コードを次のように変更しました。
void MainWindow::toggleVisible(QSystemTrayIcon::ActivationReason reason) { if (QSystemTrayIcon::Trigger == reason) { if (isVisible()) { hide(); } else { show(); raise(); activateWindow(); } } }
これはWin7で動作します。
私はactivateWindowを呼び出さなければなりませんでした。コードを次のように変更しました:
– sashoalm