![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
LE0N |
![]()
Сообщение
#1
|
Студент ![]() Группа: Участник Сообщений: 97 Регистрация: 10.3.2009 Из: Беларусь Пользователь №: 604 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Вобщем написал собственный делегат для отображения даты из бд в таблице (данные даты храню в инте)....
Вот его код: Раскрывающийся текст
Подключаю его к вьюхе: Раскрывающийся текст
Но дата всё так же отображается как число.... Что не так у меня с пониманием этих самых делегатов? |
|
|
LE0N |
![]()
Сообщение
#2
|
Студент ![]() Группа: Участник Сообщений: 97 Регистрация: 10.3.2009 Из: Беларусь Пользователь №: 604 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Люди, ай ниид хелп
![]() Ибо у меня сейчас стопор полный ![]() |
|
|
BRE |
![]()
Сообщение
#3
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: ![]() ![]() ![]() |
Люди, ай ниид хелп ![]() Ибо у меня сейчас стопор полный ![]() Для отображения, через делегат нужно переопределять paint и рисовать в нем нужную дату. Проще в самой моделе переопределить метод data и при разных ролях возвращать разные значения, а делегату оставить редактирование. В модели при роле DisplayRole возвращать строку даты преобразованную из int, а при EditRole возвращать сам int. Для сохранения переопределить в модели setData для роли EditRole. |
|
|
Litkevich Yuriy |
![]()
Сообщение
#4
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
LE0N |
![]()
Сообщение
#5
|
Студент ![]() Группа: Участник Сообщений: 97 Регистрация: 10.3.2009 Из: Беларусь Пользователь №: 604 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Брррр. Не понял, т.е. делегаты нужны только для редактирования?
Они не имеют ни какого отношения к отображению? ![]() Цитата а чем тебя стандартный делегат не устроил? из-за этого: Да я хотел стандартизировать вьюху. Если мне в ней нужно было бы вывести в каком-нибудь поле с датой, я тупо устанавливал бы этого делегата.... Что бы копи-пастом не заниматься.... Я вообще думал (по логике вещей). Когда я устанавливаю делегата, при отрисовке, в нужной ячейке, вьюха сама вызывает editor->show().... |
|
|
Litkevich Yuriy |
![]()
Сообщение
#6
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
Когда я устанавливаю делегата, при отрисовке, в нужной ячейке, вьюха сама вызывает editor->show().... редактор будет показыватся, только при входе в режим редактирования, тебе это надо было или просто отображение теста, не во время редактирования?Я задачу нескользо не пойму. Стандартный делегат нормально отображает дату. Не понял, т.е. делегаты нужны только для редактирования? нет, но для разных ситуаций нужно в делегате реализовать разные функции.Например для редактирования нужны те функции, которые ты уже реализовал. А для рисования ячейки, не во время редактирования нужно реализовать методы рисования (paint). Посмотри статью: Разработка делегатов |
|
|
BRE |
![]()
Сообщение
#7
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: ![]() ![]() ![]() |
Брррр. Не понял, т.е. делегаты нужны только для редактирования? Они не имеют ни какого отношения к отображению? ![]() Для отображения низкого уровня, с помощью делегата можно рисовать в ячейке что хочешь (переопределяя метод paint). Я вообще думал (по логике вещей). Когда я устанавливаю делегата, при отрисовке, в нужной ячейке, вьюха сама вызывает editor->show().... editor используется только во время редактирования. На самом деле, если ты чуть глубже разберешся с model/view + delegate, то поймешь что все сделано нормально и логично. Потерпи. ![]() |
|
|
LE0N |
![]()
Сообщение
#8
|
Студент ![]() Группа: Участник Сообщений: 97 Регистрация: 10.3.2009 Из: Беларусь Пользователь №: 604 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Цитата редактор будет показыватся, только при входе в режим редактирования, тебе это надо было или просто отображение теста, не во время редактирования? Вообще - будут разные ситуации. Иногда - редактирование будет запрещено, иногда - разрешено....В зависимости от прав пользователя... Цитата Я задачу нескользо не пойму. Стандартный делегат нормально отображает дату. Нормально. Ни кто не спорит. Просто у меня дата в БД хранится в int.... |
|
|
BRE |
![]()
Сообщение
#9
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
LE0N |
![]()
Сообщение
#10
|
Студент ![]() Группа: Участник Сообщений: 97 Регистрация: 10.3.2009 Из: Беларусь Пользователь №: 604 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Странно, конечно, но включив редактирование - у меня ситуация лучше не стала. Теперь дата у меня устанавливается в ноль. (Скорее всего потому, что там она в инт формате ) Но я ведь явно в делегате указываю дату для эдитора....Ни хрена не понимаю...
Цитата А какой моделью пользуешся? operations=new QSqlRelationalTableModel(this,db); Можно, конечно, и переопределить data....НО! Для каждой новой таблицы и модели переопределять ячейки? У меня таблиц штук 10 с датами. Но с разными данными... Для каждой модели переопределять методы? Это же целая куча копи-паста ![]() Сообщение отредактировал LE0N - 24.3.2009, 20:57 |
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 18.2.2025, 15:02 |