我使用的是Qt,我希望我的程序能够进入系统托盘,但也可以显示为窗口。在后台运行程序,将其放入系统托盘中
例如:我启动我的程序,它打开一个窗口,...,我关闭了窗口,但程序没有关闭,它仍然在后台。然后,我可以通过系统托盘中创建的图标重新打开窗口。
我知道如何使用QSystemTrayIcon创建图标,并在右键单击图标时创建菜单,并通过菜单启动事件。然而我不知道该怎么做,所以当我关闭程序的窗口时,程序仍然在后台打开。
为了说明我的观点,它将与Steam相同。
我使用的是Qt,我希望我的程序能够进入系统托盘,但也可以显示为窗口。在后台运行程序,将其放入系统托盘中
例如:我启动我的程序,它打开一个窗口,...,我关闭了窗口,但程序没有关闭,它仍然在后台。然后,我可以通过系统托盘中创建的图标重新打开窗口。
我知道如何使用QSystemTrayIcon创建图标,并在右键单击图标时创建菜单,并通过菜单启动事件。然而我不知道该怎么做,所以当我关闭程序的窗口时,程序仍然在后台打开。
为了说明我的观点,它将与Steam相同。
你需要重新实现QWidget::closeEvent
,隐藏窗口和忽略的QCloseEvent
。
对此进行了详细的Qt System Tray Icon Example解释,这里是最有趣的部分:
void Window::closeEvent(QCloseEvent *event)
{
if (trayIcon->isVisible()) {
hide();
event->ignore();
}
}
的可能的复制[如何正确地实现了“最小化到托盘”功能的Qt?](HTTP:/ /stackoverflow.com/questions/3332257/how-do-i-properly-implement-a-minimize-to-tray-function-in-qt) –
@Torbjörn它不是一个完全重复的“最小化”和“关闭”需要以稍微不同的方式处理 –
@ms我懂了。然后,对于噪音抱歉。 –