我想開始cmd.exe
與QProcess
沒有startDetached
,因爲我需要與運行的cmd進行交互。並且cmd必須處於forground狀態。並且我想在第一個進程完成後獲得readyRead()
,然後我將執行一些其他任務,例如顯示某個消息框或啓動另一個cmd.exe或在該cmd窗口中執行另一個命令。但是,cmd窗口必須對用戶可見。Qt啓動cmd.exe
回答
你也可以在Qt旁邊啓用一個控制檯。
Console output in a Qt GUI app?
然後用qDebug
電話把文本輸出到調試窗口或使用iostream
與std::cout
和std::cin
。
編輯: 要顯示控制檯,在.pro中添加「CONFIG + = console」,然後在您的項目>運行設置中,一定要選中「在終端中運行」。
EDIT2:
https://www.google.com/search?q=qprocess+cmd
http://www.qtcentre.org/threads/12757-QProcess-cmd
#include <QByteArray>
#include <QProcess>
#include <iostream>
#include <string>
using namespace std;
int main(int argc,char** argv)
{
QProcess cmd;
cmd.start("cmd");
if (!cmd.waitForStarted())
return false;
cmd.waitForReadyRead();
QByteArray result = cmd.readAll();
cout << result.data();
string str;
getline(cin,str);
while(str != string("exit"))
{
cmd.write(str.c_str());
cmd.write("\n");
cmd.waitForReadyRead();
result = cmd.readAll();
cout << result.data();
getline(cin,str);
}
}
我這裏測試的代碼,它可以讓你用命令行交互,並通過readyread得到輸出回(),但如果你正在使用GUI運行它,您將需要將此while循環從main移到另一個線程中。
這聽起來像你想運行一個命令行程序(或幾個),而它運行顯示輸出,然後當它完成運行其他程序。
我通常通過在主窗口中具有隻讀QPlainTextEdit來將io顯示到命令行來實現此目的。在堆上創建和connect
其readyReadStandardError和readyReadStandardOutput信號QProcess在你的主窗口中的插槽,打印文字到您QPlainTextEdit。然後用QProcess::start的參數啓動你的命令行程序並等待它結束。一旦完成,以相同的方式開始你的下一個過程。
有如何創建在Qt的造物主「的SerialPort」示例部分從QPlainTextEdit改變用途的控制檯窗口,僅供參考一個很好的例子。 – Rachael 2015-02-26 21:42:37
- 1. cmd.exe如何從java啓動?
- 2. 啓動cmd.exe的問題
- 3. Windows 7:cmd.exe:設置啓動目錄(在cmd.exe的鏈接中)
- 4. 32位cmd.exe如何在Windows Server 2003 x64上啓動64位cmd.exe?
- 5. 連續兩次啓動cmd.exe問題
- 6. 啓動exe後cmd.exe沒有關閉
- 7. 運行assoc命令而不啓動cmd.exe
- 8. 使用cmd.exe啓動Java工具
- 9. 啓動cmd.exe並更改目錄?
- 10. 在啓動Windows啓動後立即啓動Qt應用程序
- 11. 無法啓動Qt uic
- 12. QT 5.6.1 Designer x64未啓動
- 13. QT創建者和Qt(本身)的區別 - 啓動QT
- 14. 啓動新的cmd.exe而不是繼承環境?
- 15. C#窗口服務和啓動/停止cmd.exe
- 16. 在Windows上啓動cmd.exe並關閉回顯
- 17. 如何使Visual Studio調試會話啓動cmd.exe替換?
- 18. 在cmd.exe中使用/ affinity啓動可執行文件(Windows XP)
- 19. 如何更改cmd.exe的默認啓動目錄?
- 20. 如何從32位cmd.exe啓動64位PowerShell?
- 21. 爲什麼python subprocess.Popen通過cmd.exe啓動子進程?
- 22. 如何殺死由cmd.exe啓動的進程
- 23. 如何從cmd.exe運行時從cscope-win32啓動gvim.exe?
- 24. 啓動應用後控制權返回至cmd.exe的
- 25. 從瀏覽器啓動膩子也打開了cmd.exe
- 26. 在Windows 10上更改cmd.exe的默認啓動目錄
- 27. 從c#代碼啓動時隱藏cmd.exe窗口
- 28. 在啓動時啓動Qt應用程序 - Android
- 29. qt創建者代碼啓動進程
- 30. Qt Creator未在OpenSUSE中啓動
我不需要在控制檯窗口中打印任何東西。我沒有看到任何我提到的任何此類問題。我需要的只是運行一個可見的cmd.exe窗口並與之交互。 – 2013-02-20 18:10:50
您希望控制檯窗口可見,但不想打印到它?你是什麼意思「與之互動」? – Phlucious 2013-02-20 21:01:27