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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Q*View (виджеты в делегате)  (Прочитано 7779 раз)
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 буду рад любому простейшему примерчику...


« Последнее редактирование: Ноябрь 30, 2011, 12:40 от Пантер » Записан
Bepec
Гость
« Ответ #1 : Октябрь 27, 2011, 09:22 »

Up.

Summon знатоки, Онотоле, Пантер!!!
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #2 : Октябрь 27, 2011, 09:52 »

Да все легко, делаешь свой класс от QWidget, накидываешь на него все, что тебе нужно, а в делегате просто его создаешь.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #3 : Октябрь 27, 2011, 10:36 »

А чем не устроил QTreeWidget::setItemWidget() или QTableWidget::setCellWidget()?
Записан

Qt 5.11/4.8.7 (X11/Win)
Bepec
Гость
« Ответ #4 : Октябрь 27, 2011, 10:51 »

Не устроил тем, что это treeWidget Улыбающийся

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

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

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

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

Или просто придется дернуть кусок кода из стандартного .
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #5 : Октябрь 27, 2011, 10:53 »

В примере http://doc.qt.nokia.com/4.7/qabstractitemdelegate.html есть ответ на твой вопрос.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #6 : Октябрь 27, 2011, 10:57 »

Не устроил тем, что это treeWidget Улыбающийся

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

Qt 5.11/4.8.7 (X11/Win)
Bepec
Гость
« Ответ #7 : Октябрь 27, 2011, 12:03 »

Благодарю за подсказку - в большем постараюсь быть внимательнее Улыбающийся я этот пример просматривал уже раз 5-7 Улыбающийся

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

Опыт набирать то надо, пусть и через *опу Улыбающийся

Спасибо за быстрые и дельные ответы, тему закрываю.
Записан
Bepec
Гость
« Ответ #8 : Октябрь 27, 2011, 12:36 »

Update: чуть поторопился. Копаю
« Последнее редактирование: Октябрь 27, 2011, 12:40 от Bepec » Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #9 : Октябрь 27, 2011, 13:06 »

См. QAbstractItemView::setIndexWidget()
Записан

Qt 5.11/4.8.7 (X11/Win)
Bepec
Гость
« Ответ #10 : Октябрь 27, 2011, 13:12 »

Благодарю за сею функцию, но ее я знаю Улыбающийся Откопана с QTableWidget'a. Но в делегате предпочтительнее, ибо гибкость больше Улыбающийся

Update:

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

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

Печально.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #11 : Октябрь 27, 2011, 15:13 »

а почему в той теме используется 2 родителя а не один? типа первый - вьюпорт?
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Bepec
Гость
« Ответ #12 : Октябрь 27, 2011, 15:21 »

"первый родитель" QWidget(0x8fd028, name = "qt_scrollarea_viewport") " второй родитель " QTableView(0x8c9f20, name = "tableView")
Записан
Bepec
Гость
« Ответ #13 : Ноябрь 30, 2011, 12:38 »

Проблема осталась нерешенной. 3 сообщения выше.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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