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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Делегат для колонок дочерних элементов.  (Прочитано 5213 раз)
Flake
Гость
« : Апрель 07, 2009, 12:35 »

Здравствуйте.

В общем код:
Код
C++ (Qt)
treeView->setItemDelegateForColumn( 2, sysMessDlg );

Таким образом делегат есть у всех 2ых колонок. Но он должен быть только у дочерних. Как в таком случае назначить делегат?
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #1 : Апрель 07, 2009, 12:49 »

я думаю только в рукопашную, каждому элементу индивидуально.
Записан

Юра.
Flake
Гость
« Ответ #2 : Апрель 07, 2009, 13:31 »

У меня QStandardItem'ы, как к ним делегата назначить?

В общем у меня модель(QStandardItemModel) которая привязана к QTreeView. Все элементы QStandardItem.
Записан
Rcus
Гость
« Ответ #3 : Апрель 07, 2009, 13:48 »

А может стоит с другой стороны к проблеме подойти и анализировать индекс при обращении в вашем классе делегата?
Записан
Flake
Гость
« Ответ #4 : Апрель 07, 2009, 13:52 »

Да, есть такой вариант.

Только вот проблема, есть текстовое поле, оно пустое в родительском элементе и может быть пустым/заполненным в дочернем.

При обращении к классу делегату надо будет как-то идентифицировать какое это поле - родительское/дочернее. Тогда надо в элементе хранить флаг под Qt::UserRole? Я всё правильно понимаю?
Записан
EhTemka
Гость
« Ответ #5 : Апрель 07, 2009, 15:20 »

QModelIndex::parent() ?

Простая проверка на валидность :

Код
C++ (Qt)
...
 
  if (index.parent().isValid())
 {
      paintChild(index, ...);
 }
  else
 {
      paintParent(index, ...)
 }
...
 

Конечно если у тебя всего 2 уровня. Но даже если больше можно просто усложнить немного эту схему
« Последнее редактирование: Апрель 07, 2009, 15:21 от EhTemka » Записан
Flake
Гость
« Ответ #6 : Апрель 08, 2009, 09:33 »

Спасибо.

Я реализовал всё своим методом с флагом.

Идея с валидацией родителя хорошее решение, но вот вопрос: если этот делегат ещё используется для родительских элементов в других моделях у которых нет дочерних элементов. Как тогда быть?
Записан
EhTemka
Гость
« Ответ #7 : Апрель 08, 2009, 14:49 »

В таком случае у тебя всегда будет вызаватся paintParent(index, ...), собственно , то что тебе нужно, я так понимаю
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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