Qt 4.8 を使用しており、1 つ以上のディレクトリ ツリーを表示する GUI を作成しようとしています。QFileSystemModel
別のスレッドを使用しているドキュメントを読みました。私はこれを試しました:
QFileSystemModel *model = new QFileSystemModel;
model->setRootPath("C:/");
connect(model, SIGNAL(directoryLoaded(QString)), this, SLOT(alertLoaded(QString)));
ui->treeViewFolders->setModel(model);
ここalertLoaded
では、ディレクトリがロードされたときのメッセージ ダイアログのみを表示します。したがって、ツリーで新しいディレクトリ ブランチを開こうとすると、プロセス中に UI がフリーズしないように、バックグラウンドでディレクトリのアイテムをロードする必要があります。
しかし、問題は、このように動作しないように見えることです。1000 以上のファイル (system32 など) を含むディレクトリを開こうとすると、数秒間フリーズします。明らかにアイコンは読み込みを遅くしていますが、モデルが別のスレッドを使用している場合、なぜフリーズするのでしょうか?
質問:
別のスレッドを本当に使用したい、または別のスレッドを待ちたくないことをモデルに伝えるにはどうすればよいですか?