Последние несколько часов я читал, но не нашел хорошего решения того, что казалось бы простой проблемой.
У меня есть QTreeView с QFileSystemModel. Я хочу установить текущий индекс на последний файл, сохраненный пользователем, и прокрутить до этой позиции.
Поскольку 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 &) и rowInserted (const QModelIndex &, int, int)) отправлять сигналы до того, как модель завершит заполнение.
Спасибо за чью-либо помощь.
Я считаю, что это может быть связано с порядком ваших команд. Я заказываю это следующим образом
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));
Надеюсь, поможет.