私のUIは、QFileSystemModelでQTreeViewを使用して、フォルダーとファイルを選択できるようにしています。QFileSystemModel のドキュメントによると、ファイル構造の更新は別のスレッドで行われるため、UI はブロックされません。ただし、これは私には当てはまらず、矛盾や、他の人がこの問題に直面していない理由を理解できません。デバッグ後、ほとんどの時間がかかる QFileSystemModel _q_fileSystemChanged スロットがまだメイン UI スレッドで実行されていることに気付きました。これは理にかなっています。問題は、UI をブロックしないというよりも、ドキュメントがどのように主張しているかです。解決策はありますか?私は何か誤解していますか?
再現するには - QFileSystemDataModel で QTreeView を作成します - ルート パスを "" または "/" に設定します - QFileSystemModel _q_fileSystemChanged スロットにブレークポイントを設定します - アプリのロード後にドライブの 1 つを拡張します
問題: - UI スレッドでスロットが呼び出されるため、終了するまでアプリがブロックされます。
ファイル パーサーを高速化する方法はいくつかありますが、実際には別のスレッドで実行し、データが読み込まれて QTreeView の準備が整ったときに通知する必要があります。
ありがとう、イノケンティ