Qtフレームワークでは、QProcessを使用して別の.exeを開くことができるはずです。以下は、私がボタンをクリックしたときに動作しないと、コールバックが呼び出されます。Qtフレームワークで別のプロセスをこの関数で開くことができないのはなぜですか?
void MainWindow::on_pushButton_clicked()
{
QProcess *process = new QProcess(this);
QString wordPath = "C:/Program Files/Internet Explorer/iexplore.exe";
process->start(wordPath);
}
しかし私はPROCESS->スタート(wordPath)を変更した場合:
の過負荷であるprocess->start(wordPath, QStringList());
同じ機能、それは動作します。 2番目のパラメータは、開始したい新しいプロセスに渡される引数であると考えられます。私が "explorer.exe"と "msconfig"の両方が働いているので、私がPATH変数に何かがある場合は、単一引数バージョンを動作させる唯一の方法があります。この背後にある物語は、単に空のリストである2番目のQStringList()でのみ動作しますか?
QString wordPath = "C:\\Program Files\\Microsoft Office\\Office12\\WINWORD.EXE"
process->start(wordPath, QStringList() << "");
私は理由は、この背後にあるものを知っているのが大好きだ:私は、ユーザーが、特にこのような空の文字列を、追加しました別のSOの質問で
。
を試してみてください。だから、余分な引数を取る特定のオーバーロードされた関数があるにもかかわらず、単一のパラメータは、あなたが開始する新しいプロセスへのスペースパラメータ引数の後に何かを考慮するでしょうか? – Zebrafish
はい。実行可能ファイルの名前ではなく完全なコマンドラインが必要です。 [docs](http://doc.qt.io/qt-5/qprocess.html#start-1)を参照してください。それらは、この関数に対して特に助言し、その使用を完全に禁止するプリプロセッサマクロを提供します。 – Thomas