Russian Qt Forum
Ноябрь 22, 2024, 22:51 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Customize Views  (Прочитано 4914 раз)
ammaximus
Гость
« : Февраль 17, 2015, 14:02 »

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

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

Сообщений: 339


Просмотр профиля
« Ответ #1 : Февраль 17, 2015, 14:25 »

есть метод:
Код
C++ (Qt)
void QTreeView::​setFirstColumnSpanned(int row, const QModelIndex & parent, bool span)
Записан
ammaximus
Гость
« Ответ #2 : Февраль 17, 2015, 14:48 »

Спасибо!
Записан
ammaximus
Гость
« Ответ #3 : Февраль 17, 2015, 14:55 »

Но все же, допустим я хочу использовать кастомный виджет для отображения содержимого. Виджет собраный из стандартных, а не рисованый полностью, как здесь предлагается. И задать правила для связки данных.
В андроид для этого есть адаптеры, где перечисляешь какой вьюхе какое поле из Map назначить, а как это делается в Qt?
Записан
vipet
Бывалый
*****
Offline Offline

Сообщений: 452


Просмотр профиля
« Ответ #4 : Февраль 17, 2015, 15:47 »

Делагаты. QAbstractItemDelegate и пара его наследников. В examples есть примеры.
Также может оказаться полезным QItemEditorFactory.
Записан
ammaximus
Гость
« Ответ #5 : Февраль 19, 2015, 23:03 »

Допустим у меня есть виджет который "хорошо" отображает объект собственного класса А. Также у меня есть QList<A>.
Я элементарно запихал все виджеты в QLayout внутри QScrollArea и доволен.
Но может ли Model-View помочь мне в этой ситуации?

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

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

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

Видимо вот эта тема описывает мою ситуацию:
https://toster.ru/q/39263
Записан
Bepec
Гость
« Ответ #6 : Февраль 20, 2015, 00:23 »

Ну я открывал принудительно редактор. Контролировал количество одновременно показываемых ячеек и им открывал.

Были мысли вроде переопределить один виджет с многими состояниями и только раздавать ссылки, но они завяли, т.к. и вышеприведённый результат удовлетворил.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.16 секунд. Запросов: 22.