QT呼叫外部程式

2021-10-18 11:28:15 字數 1451 閱讀 5545

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...