0

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)から試してみましたstdlib.hが動作しません system("/usr/bin/evince /home/user/presentacion0.pdf");

「evince」はグラフィカルアプリケーションであるため、system() は機能しないと思います。ただし、「ls」、「mkdir」などのコマンドはsystem()問題なく実行できます。

このトピックについて助けが必要です。

事前にご協力いただき、誠にありがとうございます。

ありがとうございました。

4

1 に答える 1

0

DISPLAY環境変数が正しく設定されていないアプリケーション (ほとんどの場合シェル) から Qt アプリを実行しています(通常は:0です)。QProcess は、呼び出しプロセスの環境を使用します。

の stdout と stderr を取得することにあまり興味がなくevince、その終了を待つ必要がない場合は、 を使用しQProcess::startDetached()ます。

于 2012-09-01T16:16:51.677 に答える