0

我在 Linux 中使用 Qt。我需要从 Qt 运行“evince”pdf 阅读器。

我一直在搜索,据我所知,我可以使用 Qpr​​ocess 来使其工作。像这样的东西:

QStringList args;
    args.append("/home/user/presentacion0.pdf");
    QProcess p(this);
    p.start("/usr/bin/evince", args, QIODevice::ReadWrite);
    p.waitForFinished();
    QString p_stdout = p.readAllStandardOutput();
    QString p_stderr = p.readAllStandardError();

但我总是收到以下错误:

未指定协议无法解析参数:无法打开显示:

所以我尝试了system(char *cmd)from stdlib.hand doesn't work system("/usr/bin/evince /home/user/presentacion0.pdf");

我认为 system() 不起作用,因为“evince”是一个图形应用程序。system()但是我可以毫无问题地运行“ls”、“mkdir”等命令。

请我需要有关此主题的帮助。

我真的很感谢您提前提供的帮助。

谢谢你。

4

1 回答 1

0

您正在从没有DISPLAY正确设置环境变量(通常是:0)的应用程序(很可能是 shell)运行 Qt 应用程序。QProcess 使用调用进程的环境。

如果您对获取evince的 stdout 和 stderr 并不真正感兴趣,并且您不需要等待它完成,那么我会选择QProcess::startDetached().

于 2012-09-01T16:16:51.677 回答