2

我在 Mac OS X 10.8 下遇到了一个小 Qt 5.0.1 程序的问题。(我还没有测试任何其他平台。)

我正在使用这行代码启动一个外部 Mac OS X 程序:

QDesktopServices::openUrl(QUrl::fromLocalFile(fullpath));

其中fullpath包含应用程序的路径,例如:

/Users/schube/QTWorkspace/HelloWorld-build-Desktop_Qt_5_0_1_clang_64bit-Debug/HelloWorld.app/Contents/MacOS/../../../Aptus.app

Aptus.app是我选择的随机应用程序,可以是任何应用程序。出于测试目的,我将其放置在此路径中)。

应用程序正确启动,但始终在后台;或者至少在 Finder 窗口后面。真的很奇怪!

如何强制将新启动的应用程序发送到前台

4

2 回答 2

2

请改用 QProcess,但请确保不要将可执行文件的路径用作要运行的对象,而是将其作为参数传递给 open 命令。像这样的东西: -

QString cmd = QString("open %1").arg(fullpath); // may need QUrl::fromLocalFile(fullpath)
QProcess::startDetached(cmd);

不使用'open',它也会在其他应用程序后面打开。

请注意,如果您想等待程序完成,也可以使用执行功能。

此外,使用 open 命令,我认为您只需将路径传递给应用程序包,而不是在 Contents/MacOS 中传递其可执行文件的完整路径。要么应该工作。

于 2013-07-05T16:15:59.537 回答
0

这可能是 Mac OSX 的窗口管理器的一个功能,因此它不会窃取焦点。

您可能需要更改您的应用程序以最小化。

于 2013-07-05T16:20:09.573 回答