如何在Qt中打开和最小化外部应用程序到系统托盘

问题描述 投票:0回答:1

QProcess可用于打开外部程序,但它总是会在所有其他窗口的前面打开一个应用程序。

有没有办法打开外部应用程序,然后最小化/隐藏这个打开的应用程序到系统托盘?

QString path = QString("external app path here").replace("/", "\\");

QProcess process;
process.start(path); //open the external app, but it will stay on top of other windows 
if (process.isOpen()) {
    //then minimize this app to system tray;
}

这是(open and minimize external app to system tray)使用Qt方法可以实现的吗?

如果Qt无法将打开的外部应用程序最小化到系统托盘。我必须使用Windows API吗?任何建议或示例代码将不胜感激。

c++ windows qt5 qprocess
1个回答
1
投票

这不应该是Qt特有的。也许Qt session management可能是相关的。

这是window managerdesktop environment的问题。两者都是(非常广泛地说)您的“操作系统”提供的,并不依赖于使用Qt的特定进程。

系统托盘属于桌面环境。使用Qt的特定过程没有理由将其最小化。系统托盘的最小化是桌面环境的业务(不是一个特定的Qt应用程序)。我认为您的应用程序没有理由这样做(请记住,您的用户也可以运行其他应用程序,这对他来说比您的更重要,并且还与系统托盘交互或需要使用系统托盘)。

当然,Qt提供了一个API来与窗口管理器和桌面环境进行交互。

PS。在Linux上,Qt应用程序与窗口管理器或桌面环境之间的约定记录在EWMH和ICCCM中。您需要找到Windows的等效项。我从来没用过Windows,所以我不知道它们。在Linux上,可以使用Qt编写窗口管理器代码。

© www.soinside.com 2019 - 2024. All rights reserved.