LINUX.ORG.RU

QT qtreeView+sqlTableModel


0

1

Есть таблица с полями(sqlTableModel):
|Страна|Область|Город|...и т.д.|
Подскажите как указать qtreeView использовать поля для группировки данных что бы получилась структура:

  • ST1
    • OB1
      • GR1
      • GR2
      • GR3
    • OB2
      • GR4
      • GR5
  • ST2


Последнее исправление: mishapk (всего исправлений: 3)

При чём тут QuickTime?

anonymous
()

Никак. Пиши свою модель

Torvus
()

Подскажите как указать qtreeView

ЕМНИП там всё берётся из модели. Можешь попробовать сделать прокси-модель, если не хочешь с нуля велосипедить.

no-such-file ★★★★★
()

SqlTableModel - данные организованы таблицей, если хочешь дерево, есть 2 пути:

1. Тупо квадратно-гнездовой: на основе данных первой модели строишь модель в виде дерева.

Минусы: надо следить за обновлениями исходной модели, памяти надо в 2 раза больше.

2. Сложнее в реализации, зато можно прикручивать фильтры и сотрировки: делаешь прокси-модель, которая хитрым образом делает из таблицы дерево.

Минусы: более сложная реализация, чем в первом варианте.

Лучше сразу делать второй вариант, профит будет выше.

grondek
()

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

anonymous
()

Я пару лет назад тут задавал этот же вопрос. Лучше всего сделать прокси-модель, и на самом деле в тривиальном случае это очень просто.

1. При появлении данных в основной моделе, ты проходишься по ней и строишь в памяти дерево — свою иерархию.

2. Пишешь методы трасляции древовидных индексов в плоские: вью запрашивает данные у прокси-модели, ты, основавясь на уже построенном дереве, получаешь индекс основной модели и запрашиваешь по нему данные.

3+. Все немного усложнится при: а) нужно изменять данные; б) данные в основной моделе могут изменяться независимо от твоей прокси-модели; в) а+б — важно не запутаться в сигналах.

staseg ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.