【问题标题】:Run a program from Qt从 Qt 运行程序
【发布时间】:2012-09-02 00:16:51
【问题描述】:

我在 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();

但我总是收到以下错误:

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

所以我尝试了 stdlib.h 中的 system(char *cmd) 并不起作用 system("/usr/bin/evince/home/user/presentacion0.pdf");

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

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

非常感谢您提前提供的帮助。

谢谢。

【问题讨论】:

    标签: qt terminal qprocess


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多