QFileDialog
私はgetOpenFileName
とgetSaveFileName
の両方を使用しています。私はgetOpenFileName
でロードするネットワーク上のファイル(低速接続)を持っています。その後、私が新しいQFileDialog
を作成しようとすると、それは永遠にロードされます。QFileDialog低速ネットワーク
プロセスモニタでプロセスを調べたところ、ファイルを最後に開いたネットワーク上のすべてのファイルがゆっくりとクロールされていました。コンピュータを再起動するまでは遅くなります。これをスピードアップするために私は何ができますか?保存ダイアログ
QString filename;
QFileDialog fd(this);
filename = fd.getSaveFileName(this,tr("Save CSV File"), ".",tr("CSV Files (*.csv)"));
はありがとうファイル
ファイルを開く]ダイアログ
QString filename;
QFileDialog fd(this);
filename = fd.getOpenFileName(this,tr("Open CSV File"), ".",tr("CSV Files (*.csv)"));
:ここ
はいくつかのコードです。
賢明であるためには、何かできることがあります。機能を自分で再実装し、遅いネットワークレスポンスを別の方法で処理することもできます(たとえば、エラーを表示するなど)。実際の結果はそれ以上速く得られません。 –
@JesperJuhlはい、残念ながら、ほとんどのファイルシステムアクセスは同期しています。なぜなら、OSの内部はしばしば壊れてしまい、実世界の非同期性を完全に隠すからです。だから多くの場合、大きなファイルからチャンクを非同期に読み取ることができますが、重複した/非同期操作として実行しようとしても、ディレクトリの内容を読み取ることはブロックされます。あなたができる最善のことは、すべてをワーカースレッドに投げ、独自のダイアログを表示し、OSコールが戻るときにスレッドを停止することです。それは無駄で悲しい。ネイティブのダイアログは非同期である可能性がありますが、VFSディレクトリの反復はそうではありません:( –
だから、私が言ったように;) –