我在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”等命令而不会出现问题。
我需要有关此主题的帮助。
我真的非常感谢你的帮助。
谢谢。
答案 0 :(得分:0)
您正在从没有正确设置DISPLAY
环境变量的应用程序(很可能是shell)运行您的Qt应用程序(通常是:0
)。 QProcess使用调用进程的环境。
如果你真的没有兴趣抓住evince
的stdout和stderr,而你不需要等待它的完成,那么我会选择QProcess::startDetached()
。