Russian Qt Forum

Qt => Model-View (MV) => Тема начата: phpCoder от Март 13, 2015, 21:33



Название: Как сделать такую модель/представление?
Отправлено: phpCoder от Март 13, 2015, 21:33
Добрый день.

Нужно сделать следующую модель/представление:
Есть три колонки (аля QListWidget/View) - A1, B1 и B2. Как видно, две последних колонки объеденены одним смыслом. Из колонки А1 можно перетаскивать итемы только в колонку B1. Из B1 соответственно обратно в А1. Перетаскивания вида А1 -> А1 и B1 -> B1 запрещены. Перетаскивать что-либо в B2 также запрещается.
Когда пользователь нажимает (выделяет) элемент в колонке B2, в колонке B1 отображаются его дочерние элементы (если они есть).

Как можно подобное сделать? На какие классы смотреть? Наследовать что-то или как-то сигналами/слотами объединить обособленные QListWidget/View?


Название: Re: Как сделать такую модель/представление?
Отправлено: Bepec от Март 13, 2015, 22:19
У вас по смыслу получаются 3 View. 1 основная, вторая связанные с основной, третья - связанный с второй. 3 степени иерархии. Как это в одну view вместить я не представляю :)


Название: Re: Как сделать такую модель/представление?
Отправлено: phpCoder от Март 13, 2015, 22:35
Колонка B1 сделана для просмотра содержимого элемента, выбранного в колонке B2. Т.е. все это работает как в QColumnView. Я бы сделал три отдельных QListWidget/View, но QListWidget/View не иерархична. Значит для колонок B1 и B2 нужна иерархия, но при этом чтобы внешне на экране это выглядело как QListWidget/View.


Название: Re: Как сделать такую модель/представление?
Отправлено: Igors от Март 14, 2015, 09:11
Когда пользователь нажимает (выделяет) элемент в колонке B2, в колонке B1 отображаются его дочерние элементы (если они есть).
Странно что дети слева от родителя, ну Вам виднее. В любом случае это дерево, так почему не использовать QTreeWidget? Придется немного повозиться с DnD, но это не смертельно


Название: Re: Как сделать такую модель/представление?
Отправлено: phpCoder от Март 14, 2015, 10:27
Я хотел разделить родительные элементы и дочерние элементы и расположить их в разные виджеты (как это сделано в QColomnView) - так мне удобнее. А в QTreeWidget как это сделать?


Название: Re: Как сделать такую модель/представление?
Отправлено: Igors от Март 14, 2015, 11:59
Я хотел разделить родительные элементы и дочерние элементы и расположить их в разные виджеты (как это сделано в QColomnView) - так мне удобнее.
А как в QColomnView Вы добавите колонку "A" эл-ты которой ни родители ни чайлды колонок B1 и B2 ?

А в QTreeWidget как это сделать?
Добавляете QTreeWidgetItem(ы) которые могут иметь любое число колонок, и располагаете эти колонки как надо