Qt中執行外部程式介紹 QProcess

2021-06-25 22:24:24 字數 1466 閱讀 4354

在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 函式:
void

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