Russian Qt Forum

Qt => Model-View (MV) => Тема начата: Bepec от Октябрь 26, 2011, 14:09



Название: Q*View (виджеты в делегате)
Отправлено: Bepec от Октябрь 26, 2011, 14:09
Порыскал, почитал, но решил все же спросить.

Задача: имея модель с данными, вывести в каждой строке QListView layout с виджетами.

Виджеты как то - пара кнопок, lineEdit, label.

Соответственно со всем этим надо взаимодействовать и прочее.

Вопрос:

Как и как лучше реализовать:

1) засунуть в делегат виджеты (на каждую строку соответственно по 5-6 виджетов, и с ними работать) (не представляю как реализовать :( )

2) отрисовывать изображения и соответственно обрабатывать нажатия, ввод, отжатия, вызовы. (понятно дело что это муторнее и страшнее (для тех же кнопок 2 состояния и прочая прочая) )

Тема похожая про то, что хочу реализовать - http://www.prog.org.ru/topic_19631_0.html;topicseen, но к сожалению ТС замолчал насчет исходников.

PS буду рад любому простейшему примерчику...




Название: Re: QListView + Delegat + widget's
Отправлено: Bepec от Октябрь 27, 2011, 09:22
Up.

Summon знатоки, Онотоле, Пантер!!!


Название: Re: QListView + Delegat + widget's
Отправлено: Пантер от Октябрь 27, 2011, 09:52
Да все легко, делаешь свой класс от QWidget, накидываешь на него все, что тебе нужно, а в делегате просто его создаешь.


Название: Re: QListView + Delegat + widget's
Отправлено: GreatSnake от Октябрь 27, 2011, 10:36
А чем не устроил QTreeWidget::setItemWidget() или QTableWidget::setCellWidget()?


Название: Re: QListView + Delegat + widget's
Отправлено: Bepec от Октябрь 27, 2011, 10:51
Не устроил тем, что это treeWidget :)

PS увы не я решаю сейчас что и как, тут есть кому за меня думать.

to Пантер - благодарю, сам что-то не додумался.

Но возникает еще 1 вопрос:

Если переопределять свой делегат, можно ли к примеру 2 ячейки под свой делегат (виджеты), а 2 к примеру оставить под стандартным?

Или просто придется дернуть кусок кода из стандартного .


Название: Re: QListView + Delegat + widget's
Отправлено: Пантер от Октябрь 27, 2011, 10:53
В примере http://doc.qt.nokia.com/4.7/qabstractitemdelegate.html есть ответ на твой вопрос.


Название: Re: QListView + Delegat + widget's
Отправлено: GreatSnake от Октябрь 27, 2011, 10:57
Не устроил тем, что это treeWidget :)

PS увы не я решаю сейчас что и как, тут есть кому за меня думать.
Q*View нужно использоваться при больших объёмах данных.
В вашем случае использовать Q*Widget самое то, чтобы не изобретать велосипед.


Название: Re: QListView + Delegat + widget's
Отправлено: Bepec от Октябрь 27, 2011, 12:03
Благодарю за подсказку - в большем постараюсь быть внимательнее :) я этот пример просматривал уже раз 5-7 :)

to GreatSnake:
В будущем я планирую большие объемы, но... хоть это будет и рабочая программа с определенной целью, первоочередное - научиться мне работать с моделями/view'ами/ делегатами.

Опыт набирать то надо, пусть и через *опу :)

Спасибо за быстрые и дельные ответы, тему закрываю.


Название: Re: Q*View (виджеты в делегате) [РЕШЕНО]
Отправлено: Bepec от Октябрь 27, 2011, 12:36
Update: чуть поторопился. Копаю


Название: Re: Q*View (виджеты в делегате) [РЕШЕНО]
Отправлено: GreatSnake от Октябрь 27, 2011, 13:06
См. QAbstractItemView::setIndexWidget()


Название: Re: Q*View (виджеты в делегате) [РЕШЕНО]
Отправлено: Bepec от Октябрь 27, 2011, 13:12
Благодарю за сею функцию, но ее я знаю :) Откопана с QTableWidget'a. Но в делегате предпочтительнее, ибо гибкость больше :)

Update:

Проблема описанная в этой теме - http://www.prog.org.ru/topic_10688_0.html

Вкратце - при 1 нажатии на любую из кнопок значение текущей строки = -1.

Печально.


Название: Re: Q*View (виджеты в делегате) [РЕШЕНО]
Отправлено: kambala от Октябрь 27, 2011, 15:13
а почему в той теме используется 2 родителя а не один? типа первый - вьюпорт?


Название: Re: Q*View (виджеты в делегате) [РЕШЕНО]
Отправлено: Bepec от Октябрь 27, 2011, 15:21
"первый родитель" QWidget(0x8fd028, name = "qt_scrollarea_viewport") " второй родитель " QTableView(0x8c9f20, name = "tableView")


Название: Re: Q*View (виджеты в делегате) [Старая болячка. ДОКТОРААА!!!]
Отправлено: Bepec от Ноябрь 30, 2011, 12:38
Проблема осталась нерешенной. 3 сообщения выше.