2016-12-13 20 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()); 
相关问题