0

NFS サーバーから PC にファイルをダウンロードするアプリケーションを開発しています。私のタスクを達成するために、指定されたパスにあるすべてのディレクトリをコピーし、QProcess を使用してスクリプトを実行するシェル スクリプトを作成しました。QProcess は正常に動作し、すべてのディレクトリをダウンロードします。

ここで、ダウンロード プロセス レポートを QProgressBar に表示したいと思います。(インターネットからファイルをダウンロードしているときにウィンドウに表示されるのと同じです)。

私はグーグル検索を試し、シグナルを使っていくつかのアイデアを見つけ、次のように試しました:

void NfsClient::NfsDownload()
{
    download = new QProcess(this);
    connect(download, SIGNAL(readyReadStandardOutput()), this, SLOT(displayProgressBar()) );
    download->execute("bash /home/samurai/NfsFileDownload.sh");
}


void NfsClient::displayProgressBar()
{
    ui->progressbar->setvalue(download->readAll().toInt());
}

しかし、この readyReadStandardOutput() シグナルは発行されません。スクリプトの実行中に Qt ウィンドウがフリーズします。プログレスバーは変更されません。:(

それに応じて QProgressbar を更新する方法はありますか??? または、ダウンロードプロセスの GUI ビューを表示するアイデアはありますか???

提案/アイデア???

4

1 に答える 1

0

Shellスクリプトの概念を取り除き、QDirクラスを実装することで解決しました。

したがって、NFS サーバーにアクセスするには、クライアントはサーバー ディレクトリをその側のフォルダーの 1 つにマウントする必要があります。したがって、ローカル フォルダーからコピーするには、組み込みの Qt クラス QDir をコピー、削除、アップロード機能に使用することをお勧めします。

于 2012-08-02T06:46:30.777 に答える