2013-07-05 63 views
2

我在Mac OS X 10.8下有一个小小的Qt 5.0.1程序问题。 (我没有测试任何其他平台呢。)在MacOS上用Qt在前台启动应用程序X

我启动外部的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窗口后面。真奇怪!

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

回答

2

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

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

不使用“开放”,这也将开辟落后于其他应用程序。

请注意,如果您想等待程序结束,也可以使用execute函数。

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

+0

谢谢你,这工作! – schube

0

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

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

相关问题