Делегат для конкретной ячейки в QTableView |
Здравствуйте, гость ( Вход | Регистрация )
Делегат для конкретной ячейки в QTableView |
JuryS1806 |
21.1.2011, 2:09
Сообщение
#1
|
Студент Группа: Участник Сообщений: 93 Регистрация: 21.10.2009 Из: Нижний Новгород Пользователь №: 1168 Спасибо сказали: 9 раз(а) Репутация: 0 |
Всем привет !
Здорово работать с QTableView при помощи делегатов, но вот такая незадача, например, я могу установить делегат для столбца или строки таблицы, а как присвить его конкретному индексу. В MS Access это делается очень легко и непринужденно, а здесь я так понял можно только через setIndexWidget и созданный Widget подцеплять к четырем слотам, вместо простоейшего использования ItemDelegate. В справке нашел: Note: If a delegate has been assigned to both a row and a column, the row delegate (i.e., this delegate) will take presedence and manage the intersecting cell index. т.е. как бы если назначить делегат для строки и столбца, будет работать в ячейки пересечения, но почему то он работает и по гориз и по верт. Спасибо заранее за помощь ! P.S. Any existing row delegate for row will be removed, but not deleted. QAbstractItemView does not take ownership of delegate. т.е. опять memory leaks ? |
|
|
igor_bogomolov |
21.1.2011, 8:53
Сообщение
#2
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
Note: If a delegate has been assigned to both a row and a column, the row delegate (i.e., this delegate) will take presedence and manage the intersecting cell index. Тут опечатка в документации. Должно быть precedence. Т.е. если делегат был назначен как для строки так и для колонки, то приоритет будет иметь делегат строки, который будет управлять пересекающейся ячейкой.Для конкретной ячейки делегат установить нельзя. У меня на такой случай есть "обобщенный делегат". Т.е. делегат который имеет множество представлений по редактированию. Я в Qt::UserRole выставляю тип делегата, и зависимости от этого типа, делегат ведет себя по разному, тем самым имитируя "делегат для яцейки" |
|
|
JuryS1806 |
21.1.2011, 23:44
Сообщение
#3
|
Студент Группа: Участник Сообщений: 93 Регистрация: 21.10.2009 Из: Нижний Новгород Пользователь №: 1168 Спасибо сказали: 9 раз(а) Репутация: 0 |
Спасибо за ответ. Я вот вчера к утру додумал к следующему:
нужно создавать делегат для конкретного колумна, например:
я так понимаю, стандартным является QLineEdit. Вообще, если честно я собрал для себя коллекцию разных делегатов, искал через инет, изобретал и как результат, имею все элементы управления MS Access 2007, календарики, чекбоксы, выпадающие таблицы, списки и т.д. и т.п. И теперь работать одно удовольствие со своей моделью и делегатами! Qt очень крутая система! |
|
|
JuryS1806 |
22.1.2011, 0:11
Сообщение
#4
|
Студент Группа: Участник Сообщений: 93 Регистрация: 21.10.2009 Из: Нижний Новгород Пользователь №: 1168 Спасибо сказали: 9 раз(а) Репутация: 0 |
Нет, тоже не вариант. Если до этого какой-нибудь ячейке был назначен делегат, он перепишется новым.
Игорь, я так понял что нужно создать универсальный делегат для строки со всеми необходимыми вариантами??? Это очень много кода... А может быть все таки более простые и красивые решения ? Прикрепил скриншот того что хочу воспроизвести, т.е. в каждой строки таблицы в зависимости от выбранного типа (столбец "Тип") меняются делегаты для "Умолч","Мин","Макс". Спасибо за любое участие в решении проблемы Сообщение отредактировал JuryS1806 - 22.1.2011, 0:16 |
|
|
Текстовая версия | Сейчас: 18.1.2025, 2:33 |