2012-09-01 3 views
0

Linux에서 Qt로 작업하고 있습니다. Qt에서 "evince"pdf 리더를 실행해야합니다.Qt에서 프로그램 실행

저는 검색 중이며 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(); 

그러나 나는 항상 다음과 같은 오류가 발생합니다 :

어떤 프로토콜이 인수를 구문 분석 할 수 없습니다 지정되지

열 수 없습니다 표시 :

그래서 내가 stdlib.h에서 system(char *cmd)을 시도하고 수행 작동하지 않음 시스템 ("/ usr/bin/evince /home/user/presentacion0.pdf");

"evince"가 그래픽 응용 프로그램이기 때문에 system()이 작동하지 않는다고 생각합니다. 그러나 "ls", "mkdir"등의 명령을 문제없이 system()과 함께 실행할 수 있습니다.

제발이 주제에 대한 도움이 필요합니다.

정말 감사드립니다.

감사합니다.

답변

0

DISPLAY 환경 변수가 적절하지 않은 응용 프로그램 (대부분 쉘)에서 Qt 응용 프로그램을 실행하고 있습니다 (보통 :0). QProcess는 호출 프로세스의 환경을 사용합니다.

evince의 stdout 및 stderr을 잡는 데 정말로 관심이없고 그 마무리를 기다릴 필요가 없다면 QProcess::startDetached()으로 갈 것입니다.