Отображение настраиваемого списка файлов в QTreeView с использованием QFileSystemModel или QAbstractItemModel

Я создаю приложение PySide6 с открытым исходным кодом на основе настраиваемого файлового браузера в. Я уже создал подклассы для отображения настраиваемого столбца с некоторыми дополнительными данными.

Теперь моя цель - отобразить определенное подмножество файлов (они могут находиться на разных дисках) в виде дерева.

Для упрощения представьте, что у меня есть функция:

      def files_to_display():
    return ['C:\file1', 'D:\file2', 'D:\file3']

Теперь мне нужно отобразить эти файлы в моем QTreeView

. Я пробовал использовать QSortFilterProxyModel и filterAcceptsRowчтобы отфильтровать все остальное, и это сработало. Однако на относительно большом количестве файлов он работает очень медленно и непригоден для использования. Я почти уверен, что более простое пользовательское дерево файлов будет работать быстрее, потому что afaik отслеживает состояние папки и запускает другие дополнительные вещи, без которых я могу жить.

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

  1. Как-то вырезать то, что мне не нужно. С этим решением я не совсем понимаю, как я это делаю. В частности, как мне заполнить модель данными из моей функции? Как это использовать setRootPath

?
  • Подкласс QAbstractItemModel

  • . Это решение более или менее понятно, однако в нем отсутствуют некоторые важные вещи, которые идут в комплекте: мне нужны столбцы и данные, которые они предоставляют (имя, размер, тип, дата модификации), мне также нужен файл / значки папок, которые я использую с QFileIconProvider.

    В общем, я бы хотел использовать облегченную версию QFileSystemModel

    без просмотра файловой системы и с моим списком файлов.

    Я открыт для альтернативных решений.

    0 ответов

    Другие вопросы по тегам