在后台运行一个程序,把它放在系统托盘中

5 c++ qt system-tray background-process

我正在使用 Qt,我希望我的程序能够进入系统托盘,但也能显示为一个窗口。

例如:我启动我的程序,它打开一个窗口,...,我关闭了窗口但程序没有关闭,它仍然在后台。然后我可以通过系统托盘中创建的图标重新打开窗口。

我知道如何使用 QSystemTrayIcon 创建图标并在右键单击图标时创建菜单,并通过菜单启动事件。然而我不知道如何做到这一点,当我关闭程序窗口时,程序仍然在后台打开。

为了说明我的观点,它与 Steam 的功能相同。

m.s*_*.s. 5

你需要重写QWidget::closeEvent,隐藏窗口和忽略QCloseEvent

这在Qt System Tray Icon Example中有详细解释,这里是最有趣的部分:

void Window::closeEvent(QCloseEvent *event)
{
    if (trayIcon->isVisible()) {
        hide();
        event->ignore();
    }
}
Run Code Online (Sandbox Code Playgroud)