0

我正在尝试做简单的功能。当我点击托盘图标时:

 -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 为真。那又如何呢?

4

1 回答 1

0

当托盘图标上的单击事件在主窗口的焦点移出事件后不久发生时,您可以假设 C。所以你可以做这样的事情:

MainWindow::focusOutEvent(...) {
    trayIcon->setJustFocussedOut(true);
    this->someQTimer->start();
}

MainWindow::focusOutDone() {
    trayIcon->setJustFocussedOut(false);
}

MainWindow::someQTimerQTimer在哪里设置为单次模式和非常短的间隔(例如 50 毫秒)。该setJustFocussedOut方法在托盘图标中设置一个标志,使其将单击作为案例 C 处理。

于 2012-10-15T12:04:30.600 回答