从Qt运行程序

时间:2012-09-01 15:57:16

标签: qt terminal qprocess

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

我一直在搜索,据我所知,我可以使用Qprocess使其工作。像这样:

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)的{​​{1}}并且无效 system(“/ usr / bin / evince /home/user/presentacion0.pdf”);

我认为system()不起作用,因为“evince”是一个图形应用程序。但是我可以使用stdlib.h运行“ls”,“mkdir”等命令而不会出现问题。

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

我真的非常感谢你的帮助。

谢谢。

1 个答案:

答案 0 :(得分:0)

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

如果你真的没有兴趣抓住evince的stdout和stderr,而你不需要等待它的完成,那么我会选择QProcess::startDetached()