我有一個Windows應用程序,我想從控制檯/命令行運行一些ant腳本。我想要做的是點擊我的執行按鈕並打開一個控制檯/ shell窗口,然後在windows,unix,mac上運行命令並在完成時退出。這樣我可以看到所有的輸出。我一直在使用QProcess來做到這一點。但我真的想在每次運行腳本時打開一個控制檯窗口。他們是我可以用來做這個的API嗎?Qt Windows應用程序打開控制檯輸出
更新
這裏是我的代碼:
QString argument = QString("ant -f %1 %2 %3\n\r").arg(QDir::cleanPath(file), parameter, target);
QProcess scriptProcess;
scriptProcess.setProcessChannelMode(QProcess::MergedChannels);
if (Commons::GetCurrentOSID() == 1) // Windows
scriptProcess.start(QString("cmd"));
else if (Commons::GetCurrentOSID() == 2) // Mac
scriptProcess.start(QString("bash"));
else if (Commons::GetCurrentOSID() == 3)
scriptProcess.start(QString("bash")); // Windows
if (!scriptProcess.waitForStarted())
{
message.append("Ant command failed to execute");
}
else
{
scriptProcess.write(argument.toStdString().c_str());
scriptProcess.write("exit\n\r");
result = scriptProcess.waitForFinished();
if (result == false)
{
message.append("Ant command failed to complete");
}
else
result = true;
}
scriptProcess.closeWriteChannel();
QByteArray output = scriptProcess.readAll();
text->setPlainText(output);
注:確保你有你的螞蟻,JAVA等設置在環境中設置。
爲什麼你需要一個控制檯窗口而不僅僅是一個GUI元素,如QLabel或QTextEdit(只讀)? – lpapp
基本上我想運行例如以下命令: ant -f build.xml -Dproject =東西做某事 然後讓它只輸出控制檯上的所有信息。我使用QProcess,但它似乎在長輸出它不顯示一切。 – adviner
在某些情況下,QProcess似乎沒有捕獲所有輸出。有些情況下,在QProcess中運行時,在控制檯上工作的ant腳本似乎失敗。我不知道它是否因爲螞蟻腳本 – adviner