在qt中如何呼叫外部程式呢? 最近遇到這個問題,解決方法如下:
用qprocess類解決這個問題:
如執行a.exe, 帶兩個引數為 -z20,-q85
第一種方法:使用
qprocess類靜態函式
qprocess
::startdetached
(const
qstring
&program
,const
qstringlist
&argument
)或者qprocess
::execute
(const
qstring
&program
,const
qstringlist
&argument);
startdetached 函式不會阻止程序,
execute會阻止,即等到這個外部程式執行結束才繼續執行本程序。
qstringlist
list;
list<<"-q85"<<"-q85";
qprocess
::startdetached(
"a.exe",list); 或
qprocess
::execute(
"a.exe",list);
第二種方法:建立
qprocess類,這種方法的好處是可以檢視外部程式返回的資料,輸出結果
qprocess *pproces = new qprocess(this);
connect
(pproces
,signal
(readyread
()),this,
slot
(on_read
()));
qstringlist
list;
pproces->start("a.exe", list);
slot 函式:
voidon_read()
在使用中遇到乙個問題我也沒有解決
就是用explorer.exe 開啟資料夾的問題,當檔案路徑包含空格,就不能正確定位並選擇該檔案,另外我嘗試了將檔名用引號括起來,也沒有解決問題!即"\"c:\open file\1.txt\""
qstring szfile = "c:\open file\1.txt";
qprocess::startdetached("explorer.exe", qstringlist() << "/select,"+qdir::tonativeseparators(szfile));
如果有誰解決了,跟我分享一下吧
這篇文章希望對大家有幫助!
QT呼叫外部程式
qt呼叫外部程式 system calc.exe qprocess execute calc.exe qprocess startdetached calc.exe qprocess pro new qprocess pro start calc.exe 注釋 1 前兩種方法會阻塞程序,直到計算器程...
QT中呼叫外部程式的方法
上個月有人寫信問我這個問題,當時做了比較詳細的回答,把回答內容放上來,也許對其它 人會有些用處的吧。有些地方我的理解可能也不正確,歡迎指正 問題 回答 1 完全可以使用fork,execv函式,其實qprocess類只是對這些底層函式的封裝而 已,但是考慮到使用qprocess的話,不需要自己處理程...
Qt中呼叫外部程式開啟檔案
qdesktopservices openurl qurl fromlocalfile filename filename 檔名,如c 新建 microsoft word 文件.doc qurl fromlocalfile 一定要用這個方法,因為檔名或路徑中中文或空格,不然打不開檔案.直接用qurl...