8 / 8 / 1
Регистрация: 21.12.2008
Сообщений: 36
|
||||||||||||||||
1 | ||||||||||||||||
QFileSystemModel + QTreeView, не удаётся получить доступ начиная со второго уровня вложенности02.04.2013, 16:19. Показов 3038. Ответов 12
Метки нет (Все метки)
Создаю модель QFileSystemModel, назначаю её на QTreeView.
Пример на скриншоте: Хочу получить имена файлов и каталогов. На нулевом уровне всё нормально:
На первом уровне тоже:
Но на втором уже начинается непонятное:
Почему так?
0
|
02.04.2013, 16:19 | |
Ответы с готовыми решениями:
12
Сделать страницу второго уровня вложенности QTreeView и QFileSystemModel Домен второго уровня, static ip, доступ к сетевым ресурсам Как в запросе получить родителя второго уровня |
8 / 8 / 1
Регистрация: 21.12.2008
Сообщений: 36
|
|
06.04.2013, 10:00 [ТС] | 3 |
Хорошо, если индексы не валидные, значит я неправильно к ним обращаюсь. Значит, не понял теорию работы с моделью дерева.
Как будет верно обратиться к элементам второй (третьей и так далее) глубины вложенности? То есть, в моём примере это каталог Breaking Bad - как получить его имя? Добавлено через 11 минут Я вижу иерархию индексов так (см. приложенную схему). Выходит, она устроена иначе? Добавлено через 12 минут Не приложилась схема. Тогда опять на внешнем хостинге: . Зелёным цветом я выделил то, к чему мне удалось обратиться, красным - к чему не удалось. Добавлено через 6 минут Простите, не так нарисовал. Вот верная схема: .
0
|
06.04.2013, 16:58 | 4 |
Если не валидны - значит ты строк и столбец неправильно указал или роль.
Добавлено через 1 минуту Я сам не уверен ... только начал учить Qt и разбираться с моделями...
0
|
06.04.2013, 17:52 | 5 | |||||
Для того что бы посмотреть индексы можно написать такой код вывода в label
0
|
8 / 8 / 1
Регистрация: 21.12.2008
Сообщений: 36
|
|
06.04.2013, 18:16 [ТС] | 6 |
Так это не индексы будут выводиться, а номер строк и столбцов. Вернее, это ещё не весь индекс - не хватает родительского индекса.
То, что у вас в коде, я и так понимаю.
0
|
8 / 8 / 1
Регистрация: 21.12.2008
Сообщений: 36
|
|
06.04.2013, 18:23 [ТС] | 8 |
Ну да. А что?
0
|
8 / 8 / 1
Регистрация: 21.12.2008
Сообщений: 36
|
|
06.04.2013, 18:32 [ТС] | 10 |
Чтобы обратиться к каталогу с вашей картинки .Trash-1000 нужно знать его строку(0), столбец(0) и родительский индекс(индекс элемент Data (D: )).
Добавлено через 3 минуты Я тем временем неожиданно нашёл решение своей проблемы. Я всё правильно делал с самого начала, но немного не дочитал теорию. Доступ к элементу даётся только если выполнить expand(раскрытие) соответствующей ветки.
1
|
8 / 8 / 1
Регистрация: 21.12.2008
Сообщений: 36
|
|
06.04.2013, 18:45 [ТС] | 12 |
Вот и я несколько недоумеваю. Хотя, конечно, глядя как он долго экспандит всего лишь до 4 уровня вложенности, я думаю, что дело в производительности.
0
|
06.04.2013, 19:58 | 13 |
Так вроде производительность изначально лажовая, видел даже в интернете наброски реализации модели на основании boost::filesystem,
которая вроде как словам автора выигрыш дает в 3..4 раза. Но что касается доступности тут скорее всего поведение заложено в самой модели. Поэтому возможно нужно наследоваться и переопределять метод data и/или flags Добавлено через 3 минуты Подозреваю что там меняется флаг ItemIsEnabled. Добавлено через 12 минут Блин я чет не догнал еще такой вариант - доступа нет потому как элементов попросту на этот момент может не быть ибо они появляются только при разворачивании... Т.е. только при разворачивании выполняется поиск файлов на диске и добавление их как элементов. Добавлено через 2 минуты По идее можно проверить это предположение на обычной модели ( не файловой ) Добавлено через 51 минуту Попробовал пример из книге Шлее "Иерархическая модель" на основе QStandardItemModel, так вот там есть доступ к не раскрытым элементам.
1
|
06.04.2013, 19:58 | |
06.04.2013, 19:58 | |
Помогаю со студенческими работами здесь
13
Превышение уровня вложенности Не удается получить доступ к сайту 3 уровня вложенности в меню bootstrap Определение уровня вложенности подсписка Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |