3

ここ数時間、私は読んでいましたが、単純な一般的な問題と思われるものに対する適切な解決策を見つけられませんでした. QFileSystemModel を持つ QTreeView があります。現在のインデックスを、ユーザーが最後に保存したファイルに設定し、その位置までスクロールしたいと考えています。qfilesystemmodel は非同期で読み込まれるため、関数 scrollTo(mydesiredindex) をす​​ぐに使用すると、次のようになります。

Model = new QFileSystemModel;
Model->setRootPath(RootDirectory);
Model->setFilter(QDir::Dirs | QDir::NoDotAndDotDot);
ui.RootView->setModel(Model);
ui.RootView->setCurrentIndex(Model->index(LastUsedPath));
ui.RootView->scrollTo(Model->index(LastUsedPath));

qtreeview はファイルの現在の場所までスクロールしますが、その前にさらにファイルを追加するため、mydesiredindex はビューから押し出されます。

モデルがツリー ビューへの入力を完了したというシグナルを取得しようとしましたが、役に立ちませんでした。シグナル directoryLoaded(const QString &) および rowsInserted(const QModelIndex &, int, int)) は、モデルの作成が完了する前にシグナルを送信します。

誰の助けにも感謝します。

4

1 に答える 1

1

コマンドの順序に関連している可能性があると思います。私は次のように注文します

self.tree.scrollTo(index)
self.tree.expand(index)
self.tree.setCurrentIndex(index)

またはあなたのコードで

ui.RootView->scrollTo(Model->index(LastUsedPath));
ui.RootView->expand(Model->index(LastUsedPath));
ui.RootView->setCurrentIndex(Model->index(LastUsedPath));

それが役に立てば幸い。

于 2016-02-21T23:52:19.827 に答える