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 回答