我尝试使用QProcess :: startDetached方法运行Evince从我的Qt程序中读取pdf文件:
QProcess myProcess = QProcess();
myProcess.startDetached("evince", "~/mypath/doc.pdf");
Evince已经很好地启动了,但是在它的HMI中我得到了消息"无法打开文件,没有这样的文件或目录"
但是当我使用" acroread"时,路径是可以的。要读取文件,它会找到该文件并可以打开它。
感谢您的帮助:)
答案 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,它意味着相当于$HOME
。
acrocread
可能是一个shell脚本,并在启动实际应用程序之前隐式扩展参数,evince
可能是程序本身,所以你必须自己扩展它。
E.g。
QDir homeDir = QDir::home();
QFileInfo fileInfo(homeDir, "mypath/doc.pdf");
QProcess::startDetached("evince", QStringList() << fileInfo.absoluteFilePath());
如果您想在用户选择的阅读器中打开PDF,请参阅QDesktopServices::openUrl()
。