1

Qtにはかなり新しい。

QProcess を使用して外部シェル スクリプトを実行し、出力を GUI の textBrowser にリダイレクトしています。コード:

mainwindow.h で:

private:
   QProcess *myProcess;

および mainwindow.cpp:

void MainWindow::onButtonPressed(){
   myProcess = new QProcess(this);
   myProcess->connect(myProcess, SIGNAL(readyRead()), this, SLOT(textAppend()));
   myProcess->start("./someScript.sh", arguments);
}

void MainWindow::textAppend(){
   ui->textBrowser->append(myProcess->readAll());
}

これは、外部スクリプトを実行するのに完全に機能します。私の質問は、リソース ファイルとして含まれているスクリプトで同じプロセスを適用する方法です。"./someScript.sh"リソースバージョンに単純に置き換えてみまし":/someScript.sh"たが、うまくいかないようです。リソース スクリプトは完全に実行されますが、コンソール出力は消えます。

4

2 に答える 2

1

実行すると、システムに存在しないmyProcess->start(":/someScript.sh", arguments);実行をシステムに要求するため、私は機能しません。:/someScript.sh

簡単な解決策は、スクリプトを一時フォルダーにコピーして、そこから実行することです。

QFile::copy(":/someScript.sh", pathToTmpFile);
myProcess->start(pathToTmpFile, arguments);

QTemporaryFileを使用して一意の一時ファイル名を取得することもお勧めします。

于 2016-12-21T10:24:24.650 に答える