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