ScrollTo файл в QTreeView с QFileSystemModel при запуске

Последние несколько часов я читал, но не нашел хорошего решения того, что казалось бы простой проблемой.
У меня есть 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)) отправлять сигналы до того, как модель завершит заполнение.

Спасибо за чью-либо помощь.

3

Решение

Я считаю, что это может быть связано с порядком ваших команд. Я заказываю это следующим образом

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));

Надеюсь, поможет.

1

Другие решения


По вопросам рекламы [email protected]