Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Al.Der от Сентябрь 18, 2013, 19:13



Название: Обновить QTreeWidget
Отправлено: Al.Der от Сентябрь 18, 2013, 19:13
Есть QTreeWidget, к нему привязана модель QFileSystemModel => в дереве отображается файловая система.
При создании/ удалении файла в текущем каталоге, я думаю, посылается какой-то сигнал, что нужно обновить наш виджет и/или модель.
Так вот какой может это быть сигнал или что-то другое?

По сути мне нужно обновить список файловой системы.
Можно это сделать вручную? Что-то типа qtreewidget->refresh() ???

Просто после манипуляций в программе в QTreeWidget данные то не изменяются, то изменяются через рандомное количество секунд, а если смотреть через виндовский експлорер на папку - то все норм, а там - нет..


Название: Re: Обновить QTreeWidget
Отправлено: kambala от Сентябрь 19, 2013, 00:13
обычно QFileSystemModel привязывают к QTreeView.

файл создается/удаляется у тебя в программе или извне?


Название: Re: Обновить QTreeWidget
Отправлено: Al.Der от Сентябрь 19, 2013, 08:55
Нет, в данной программе.
так TreeWidget же наследник TreeView

Идея такова, что в каждой папочке на ПК может быть спец. файл с параметрами. если они есть - файл создается, нет - удаляется.
И есть глобальный файл с параметрами(соотв. лежит в одной конкретной папке).
Так вот, в 1м случае при созд./ удалении файла деревцо обновляется сразу,
а вот если я обновляю глобальный файл => на всем ПК должны быть применены изменения. так вот в виндовском експлорере все сразу работает, а в проге - нет


Название: Re: Обновить QTreeWidget
Отправлено: GreatSnake от Сентябрь 19, 2013, 09:57
так TreeWidget же наследник TreeView
Использовать QTreeWidget со своей моделью как минимум не оптимально, т.к. QTreeWidget в конструкторе создаёт свою модель, на которую вешает кучу слотов. И всё это будет дропаться и по-новой вешаться при установке на него другой модели.
И какой тогда великий смысл в этом случае использовать QTreeWidget ???


Название: Re: Обновить QTreeWidget
Отправлено: Al.Der от Сентябрь 20, 2013, 00:39
Ну, особой нужды действительно нету...

Но все же как обновить модель ?


Название: Re: Обновить QTreeWidget
Отправлено: Bepec от Сентябрь 20, 2013, 06:56
Кривые пути решения:
1) резетнуть View. Тогда оно само перезапросит данные, но вернётся на начальное положение.
2) отнаследоваться от Model и сделать публичный метод обновления данных.
3) отнаследоваться и сделать модель с автообновлением данных в N секунд.

Прямой:
Чётко определить что не так работает.

Directory View показывает всё нормально? Если да - то проблема где то в вашей программе. Вырезайте куски кода и ищите, ищите, ищите.

Directory View тоже тормозит? Открываем исходники модели и ищем на что они завязаны и почему не происходит обновление.