我正在尝试做简单的功能。当我点击托盘图标时:
-A- if app is hide > show
-B- if app is show and is NOT focus > focus it
-C- if app is show and focus > hide
非常简单,但是如果您有焦点应用程序并单击“尝试”图标,则焦点将丢失,现在任务栏已获得焦点。所以 B 条件而不是 C 为真。那又如何呢?
当托盘图标上的单击事件在主窗口的焦点移出事件后不久发生时,您可以假设 C。所以你可以做这样的事情:
MainWindow::focusOutEvent(...) {
trayIcon->setJustFocussedOut(true);
this->someQTimer->start();
}
MainWindow::focusOutDone() {
trayIcon->setJustFocussedOut(false);
}
MainWindow::someQTimer
QTimer在哪里设置为单次模式和非常短的间隔(例如 50 毫秒)。该setJustFocussedOut
方法在托盘图标中设置一个标志,使其将单击作为案例 C 处理。