QProcess:startDetached打开应用程序,但找不到参数

时间:2016-12-13 17:03:07

标签: qt pdf qprocess

我尝试使用QProcess :: startDetached方法运行Evince从我的Qt程序中读取pdf文件:

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

Evince已经很好地启动了,但是在它的HMI中我得到了消息"无法打开文件,没有这样的文件或目录"

但是当我使用" acroread"时,路径是可以的。要读取文件,它会找到该文件并可以打开它。

感谢您的帮助:)

3 个答案:

答案 0 :(得分:0)

您是否尝试过发送完整路径/home/user/mypath/doc.pdf

还尝试使用一个参数调用它:

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

答案 1 :(得分:0)

我记得我遇到了同样的问题而无法使其发挥作用。然而,这对我有用:

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

答案 2 :(得分:0)

波形符号是一个shell快捷方式,它不一定对任何其他程序都有意义。

对于shell,它意味着相当于$HOMEacrocread可能是一个shell脚本,并在启动实际应用程序之前隐式扩展参数,evince可能是程序本身,所以你必须自己扩展它。

E.g。

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

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

如果您想在用户选择的阅读器中打开PDF,请参阅QDesktopServices::openUrl()