如何在Qt

时间:2019-04-06 06:59:58

标签: c++ windows qt5 qprocess

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;
}

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

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

1 个答案:

答案 0 :(得分:1)

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

这是window managerdesktop environment的问题。两者都是(从广义上来说)由您的“操作系统”提供的,并且与使用Qt的特定过程无关。

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

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

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