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

「開く」を使用しないと、他のアプリケーションの背後にも開きます。

プログラムの終了を待ちたい場合は、execute 関数を使用することもできます。

また、open コマンドでは、Contents/MacOS の実行可能ファイルへのフル パスではなく、アプリ バンドルへのパスを渡すだけでよいと思います。どちらでも動作するはずです。

于 2013-07-05T16:15:59.537 に答える