2012-09-01 68 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」);

我認爲system()不起作用,因爲「evince」是一個圖形應用程序。不過,我可以在沒有問題的情況下運行「ls」,「mkdir」等命令。

請幫我解決這個問題。

我真的很感謝您的幫助提前。

謝謝。

回答

0

您正在從應用程序(很可能是shell)運行您的Qt應用程序,該應用程序沒有正確設置DISPLAY環境變量(通常爲:0)。 QProcess使用調用進程的環境。

如果您對抓取evince的stdout和stderr不是很感興趣,而且您不需要等待它的完成,那麼我會使用QProcess::startDetached()