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