Russian Qt Forum

Qt => Model-View (MV) => Тема начата: ammaximus от Февраль 17, 2015, 14:02



Название: Customize Views
Отправлено: ammaximus от Февраль 17, 2015, 14:02
Понадобилось откустомайзить внешний вид для TreeView:
1. Хочу чтобы для parent узлов (Interface) была одна большая ячейка, ибо они не помещаются в одну, для child таблица на три, как и сейчас. Ну вроде объединения ячеек в excel для строк-родителей.

Не найдя решения вопроса напрямую решил унаследоваться от QTreeView или QStyledItemDelegate. Но QTreeView::drawRow предлагает рисовать с помощью QPainter, я же надеялся наклепать строку из готовых виджетов - QLineEdit.


Название: Re: Customize Views
Отправлено: Johnik от Февраль 17, 2015, 14:25
есть метод:
Код
C++ (Qt)
void QTreeView::​setFirstColumnSpanned(int row, const QModelIndex & parent, bool span)


Название: Re: Customize Views
Отправлено: ammaximus от Февраль 17, 2015, 14:48
Спасибо!


Название: Re: Customize Views
Отправлено: ammaximus от Февраль 17, 2015, 14:55
Но все же, допустим я хочу использовать кастомный виджет для отображения содержимого. Виджет собраный из стандартных, а не рисованый полностью, как здесь предлагается. И задать правила для связки данных.
В андроид для этого есть адаптеры, где перечисляешь какой вьюхе какое поле из Map назначить, а как это делается в Qt?


Название: Re: Customize Views
Отправлено: vipet от Февраль 17, 2015, 15:47
Делагаты. QAbstractItemDelegate и пара его наследников. В examples есть примеры.
Также может оказаться полезным QItemEditorFactory.


Название: Re: Customize Views
Отправлено: ammaximus от Февраль 19, 2015, 23:03
Допустим у меня есть виджет который "хорошо" отображает объект собственного класса А. Также у меня есть QList<A>.
Я элементарно запихал все виджеты в QLayout внутри QScrollArea и доволен.
Но может ли Model-View помочь мне в этой ситуации?

Да, есть QItemDelegate, но он не виджет и предлагает мне переопределить paint. Я не хочу писать рисование, у меня уже есть виджет из стандартных компонентов.

QDataWidgetMapper  что-то похожее, но он не работает с видом и позволяет видеть только один индекс в один момент времени.

Еще вариант, допустим таблица. Каждая строка элемент. В конце строки кнопка - крестик, для удаления. Неужели такое нельзя сделать?

Видимо вот эта тема описывает мою ситуацию:
https://toster.ru/q/39263


Название: Re: Customize Views
Отправлено: Bepec от Февраль 20, 2015, 00:23
Ну я открывал принудительно редактор. Контролировал количество одновременно показываемых ячеек и им открывал.

Были мысли вроде переопределить один виджет с многими состояниями и только раздавать ссылки, но они завяли, т.к. и вышеприведённый результат удовлетворил.