qt呼叫外部程式
system
("calc.exe"
);
qprocess::
execute
("calc.exe");
/qprocess::
startdetached
("calc.exe"
);
qprocess *pro =
new qprocess;
pro-
>
start
("calc.exe"
);
注釋:
1、前兩種方法會阻塞程序,直到計算器程式結束,而第三種方法則不會阻塞程序,可以多工執行。
2、qt在執行的時候,要啟動qws服務,如果用前兩種方法,執行的時候,要新開啟乙個qws,否則不能執行;而第三種方法,則不需要在開啟qws,他和主程序公用乙個qws。
3、第三種雖然不會阻塞,但是有可能在終端上看不到列印出來的資訊。所以要在終端顯示資訊,可以考慮阻塞模式。
qprocess物件可以直接執行cmd的命令,但是ping操作是會阻塞的,所以需要在子執行緒裡ping
qprocess *tempcmd =
newqprocess()
;tempcmd-
>
start
(orderinfo)
;tempcmd-
>
waitforfinished
(1000);
//阻塞等待執行命令完成,否則返回的很可能是空字串
qstring resultinfo = qstring::
fromlocal8bit
(tempcmd-
>
readallstandardoutput()
);//resultstr就是返回結果,需要fromlocal8bit來接收中文
ps:上面使用的是qprocess::start,還可以使用qpocess::startdetached,
區別:1)一體式:void qprocess::start(const qstring & program, const qstringlist & arguments, openmode mode = readwrite)
外部程式啟動後,將隨主程式的退出而退出。
2)分離式:void qprocess::startdetached(const qstring & program, const qstringlist & arguments, const qstring & workingdirectory = qstring(), qint64 * pid = 0)
外部程式啟動後,當主程式退出時並不退出,而是繼續執行。
侵刪
QT下呼叫外部程式
qt呼叫shell 或 外部程式有三種方法 第一種方法,是呼叫linux c 函式庫中的 system const char string system opt ts test 第二種方法 qprocess execute opt ts test 第三種方法 qprocess poc new qpr...
QT中呼叫外部程式的方法
上個月有人寫信問我這個問題,當時做了比較詳細的回答,把回答內容放上來,也許對其它 人會有些用處的吧。有些地方我的理解可能也不正確,歡迎指正 問題 回答 1 完全可以使用fork,execv函式,其實qprocess類只是對這些底層函式的封裝而 已,但是考慮到使用qprocess的話,不需要自己處理程...
Qt程式設計呼叫外部程式開啟檔案
qdesktopservices openurl qurl fromlocalfile filename filename 檔名,如c 新建 microsoft word 文件.doc qurl fromlocalfile 一定要用這個方法,因為檔名或路徑中中文或空格,不然打不開檔案.直接用qurl...