2016-12-13 19 views
0

我試圖運行了Evince從我的Qt程序讀取PDF文件時,使用另外,QProcess :: startDetached方法:另外,QProcess:startDetached打開的應用程序,但是沒有找到說法

QProcess myProcess = QProcess(); 
myProcess.startDetached("evince", "~/mypath/doc.pdf"); 

了Evince良好推出,但在它的人機界面中,我收到消息「無法打開文件,沒有這樣的文件或目錄」

但是,當我使用「acroread」讀取文件時,它會找到文件並打開它。

謝謝你的幫助:)

回答

0

波浪符號是一個外殼程序快捷方式,它並不意味着任何其他程序什麼。

對於殼來說,它意味着相當於$HOMEacrocread可能是一個shell腳本,並在啓動實際應用程序之前隱式擴展參數,evince可能是程序本身,所以您必須自己擴展它。

E.g.

QDir homeDir = QDir::home(); 
QFileInfo fileInfo(homeDir, "mypath/doc.pdf"); 

QProcess::startDetached("evince", QStringList() << fileInfo.absoluteFilePath()); 

如果你想打開選擇用戶的閱讀器的PDF,請參閱QDesktopServices::openUrl()代替。

+0

謝謝你,你的解決方案完美。也謝謝你的解釋! – user7292144

0

你試圖發送完整路徑/home/user/mypath/doc.pdf

也嘗試用一個參數來調用它:

myProcess.startDetached("evince ~/mypath/doc.pdf"); 
+0

當我發送完整路徑它不起作用,但在一個參數調用起作用,謝謝! – user7292144

0

我記得我有同樣的問題,並不能使它發揮作用。然而這個工作對我來說:

QString commandLine = command + " " + parameter; 
int result = QProcess::execute(commandLine.toLatin1()); 
相關問題