С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/13: Рейтинг темы: голосов - 13, средняя оценка - 5.00
 Аватар для Doddger
12 / 15 / 8
Регистрация: 24.09.2014
Сообщений: 122

Как перебрать все элементы QFileSystemModel ?

21.10.2015, 15:56. Показов 2750. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть два вопроса:
1) *.cpp
C++ (Qt)
1
2
3
4
5
modelFilesystem = new QFileSystemModel;
modelFilesystem->setRootPath("/home/boris/Progzz/Test");
treeRootDirs = new QTreeView;
treeRootDirs->setModel(modelFilesystem);
treeRootDirs->setRootIndex(modelFilesystem->index("/home/boris/Progzz/Test/"));
Каким образом можно перебрать все элементы modelFilesystem ?

2)Применяю фильтр
C++ (Qt)
1
modelFilesystem->setNameFilters(*listNameFilter);
при этом во вьювере показаны либо все элементы модели, либо только попадающие под фильтр, в зависимости от NameFilterDisables().
Они как-то "помечены"? Если да, то как? Как обратиться только к отфильтрованным элементам?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.10.2015, 15:56
Ответы с готовыми решениями:

Как перебрать все элементы array?
Добрый день. При компиляции вот такого кода: DirectoryInfo^ info=gcnew DirectoryInfo(path); array<FileInfo^>^...

Как перебрать в цикле все элементы Dictionary
Итак, имеем: foreach (kl k in Dictionary) {} где Dictionary возвращает список, а k элемент типа...

Как перебрать все дочерние элементы body?
Сам думал и искал, ничего лучше не нашёл чем $(body.childNodes).each. Почему не работает и как перерать все дочерние элементы body?

4
 Аватар для Doddger
12 / 15 / 8
Регистрация: 24.09.2014
Сообщений: 122
23.10.2015, 15:23  [ТС]
И ещё несколько вопросов:
3) Как применить фильтр ещё и ко вложенным папкам? Поясню: есть у меня папка folger и её ребёнок childfolder. Применив фильтр child* я не увижу ни родителя, ни ребёнка, что на мой взгляд не правильно. Ситуация не редкая и не особенная. Как тут быть, подскажите.
4) QTreeView не показывает рутовую папку. Как сделать, чтоб показывал?
5) Как изменить текст хедера у QTreeView?
0
 Аватар для Doddger
12 / 15 / 8
Регистрация: 24.09.2014
Сообщений: 122
13.11.2015, 11:47  [ТС]
До сих пор актуально.
0
Эксперт по математике/физикеЭксперт С++
 Аватар для Ilot
2223 / 1425 / 420
Регистрация: 16.05.2013
Сообщений: 3,642
Записей в блоге: 6
13.11.2015, 13:03
Цитата Сообщение от Doddger Посмотреть сообщение
Каким образом можно перебрать все элементы modelFilesystem ?
Писать свой итератор. Пользоваться функциями модели:
C++ (Qt)
1
2
3
4
virtual QVariant    data(const QModelIndex & index, int role = Qt::DisplayRole) const
virtual bool    hasChildren(const QModelIndex & parent = QModelIndex()) const
virtual int rowCount(const QModelIndex & parent = QModelIndex()) const
virtual QModelIndex index(int row, int column, const QModelIndex & parent = QModelIndex()) const = 0
Добавлено через 6 минут
Цитата Сообщение от Doddger Посмотреть сообщение
Как изменить текст хедера у QTreeView?
Обратиться к модели:
C++ (Qt)
1
virtual bool    setHeaderData(int section, Qt::Orientation orientation, const QVariant & value, int role = Qt::EditRole)
0
 Аватар для Doddger
12 / 15 / 8
Регистрация: 24.09.2014
Сообщений: 122
13.11.2015, 16:13  [ТС]
У меня почему-то выходит так:
C++ (Qt)
1
2
modelFilesystem->hasChildren(modelFilesystem->index(modelFilesystem->rootPath())); // возвращает true
modelFilesystem->rowCount(modelFilesystem->index(modelFilesystem->rootPath()));    // возвращает 0
корневой каталог не пустой.

Добавлено через 1 минуту
Как обратиться к детям корневого каталога?

Добавлено через 1 час 58 минут
Разобрался в чём дело:
методы QFileSystemModel::index(QFileSystemModel ::rootPath()) и QFileSystemModel::index(QFileSystemModel ::rootDirectory().absolutePath())
возвращают разные индексы, хотя это один и тот же каталог. Почему так, для меня пока не понятно. Причём индексом предка для вложенных в рутовую директорию является именно второй индекс. Но это ещё ничего, QFileSystemModel::rowCount(const QModelIndex & parent = QModelIndex()) и QModelIndex::row() возвращают 0, до тех пор, пока нет явного обращения к детям.
Так что вопрос для меня так и не решён.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.11.2015, 16:13
Помогаю со студенческими работами здесь

Как перебрать все элементы многомерного массива C#
Как перебрать все элементы многомерного массива C# private static Array GetArray(int dimention, int size = 10, int min = 0, int...

Как перебрать все дочерние элементы некого Layout
Всем добрый день. Вопрос задан в названии темы: имеется основной слой (LinearLayout), в нем несколько других слоёв. Вот с ними мне и...

Как перебрать все элементы любого List без типизации?
Добрый день. Подскажите пожалуйста можно ли как то перебрать все элементы в списке без указания типа, и если да то как? Дело в том, что...

Как перебрать все элементы ассоциативного массива, не используя ключи и foreach?
имеется массив с ключом string. Как мне его перебрать весь, не используя эти ключи и не используя foreach ?

Как перебрать все элементы определенного класса, доступные в данном классе
Есть у меня некий класс Car Я создал несколько его экземпляров Экземпляр класса Car в качестве одного из параметров принимает Control...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru