Qt应用程序,焦点和显示/隐藏功能

时间:2012-10-15 11:55:04

标签: qt focus trayicon

我正在尝试使用simly功能。 当我点击托盘图标时:

 -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. 那是什么呢?

1 个答案:

答案 0 :(得分:0)

当主窗口的焦点输出事件发生后很快发生托盘图标上的单击事件时,您可以采用C.所以你可以这样做:

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

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

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