在启动时使用QFileSystemModel滚动到QTreeView中的文件

时间:2014-12-19 19:45:42

标签: c++ qt qtreeview qfilesystemmodel

最近几个小时我一直在阅读,但没有找到一个好的解决方案,这似乎是一个简单的常见问题。 我有一个带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))在模型完成填充之前发出信号。

感谢任何人的帮助。

1 个答案:

答案 0 :(得分: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));

希望它有所帮助。