2013-07-05 113 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的窗口管理器的一個功能,因此它不會竊取焦點。

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

相關問題