[РЕШЕНО] откат к старым данным при редактировании через делегат (QItemDelegate::eventFilter) |
Здравствуйте, гость ( Вход | Регистрация )
[РЕШЕНО] откат к старым данным при редактировании через делегат (QItemDelegate::eventFilter) |
igor_bogomolov |
28.9.2009, 18:27
Сообщение
#1
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
Всем привет.
Есть у меня табличка, данные которой редактирую через делегаты. Для этих делегатов мне нужно такое поведение, что бы дынные фиксировались обратно в модель, только при нажатии Enter, во всех остальных случаях происходил откат к старым данным. Не нашёл никакого другого решения, кроме как перекрыть метод eventFilter у делегата. Для редактирования через QSpinBox, достаточно оказалось следущего кода SpinBoxDelegate::eventFilter
А вот для случая редактирования через QComboBox, подобного поведения никак добиться не получается ComboBoxDelegate::eventFilter
Кто сможет подправить так, чтобы при щелчке мышкой вне комбо бокса и его выпадающего списка, редактирование закрывалось, но данные в модель не фиксировались? Или может есть какой другой способ добиться такого поведения? |
|
|
kwisp |
28.9.2009, 18:42
Сообщение
#2
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
извини не по теме.
объясни пожалуйста почему static_cast пользуешь? |
|
|
igor_bogomolov |
28.9.2009, 19:07
Сообщение
#3
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
Сам я для классов наследованных от QObject всегда использовал qobject_cast, в данном случае синтаксис перенял из примера в ассистенте. Или вопрос почему не dynamic_cast? Насколько я понимаю здесь нет динамического приведения типов.
Сообщение отредактировал igor_bogomolov - 28.9.2009, 19:14 |
|
|
kwisp |
28.9.2009, 19:21
Сообщение
#4
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
igor_bogomolov,
ясно. мне вот эти строчки показалась опасными при поддержке или если придется код заимствовать. Цитата QSpinBox* spinBox = static_cast<QSpinBox*>(editor);
QComboBox* comboBox = static_cast<QComboBox*>(editor); Сообщение отредактировал kwisp - 28.9.2009, 19:21 |
|
|
igor_bogomolov |
14.12.2009, 17:37
Сообщение
#5
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
Продублирую, что бы закрыть тему.
Решил так:
|
|
|
Litkevich Yuriy |
14.12.2009, 20:06
Сообщение
#6
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
igor_bogomolov, я вот думаю как бы тему переобозвать, чтобы соответствовать конечной задаче.
|
|
|
igor_bogomolov |
15.12.2009, 0:01
Сообщение
#7
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
Не знаю. Например - "Как отловить потерю фокуса у QComboBox в делегате"
Как только указать, что имеется в виду "полная" потеря фокуса виджетом, а не переход фокуса на его выпадающий список? В подзаголовке что-нибудь написать? Не знаю правда, осуществляется ли по нему поиск? С поиском на сайте - беда полнейшая. Очень тяжело что либо искать Могу так же выложить свои делегаты имитирующие виджеты(QPushButton, QLineEdit, QCheckBox(точнее его чекер)). Тут есть картинка |
|
|
Litkevich Yuriy |
15.12.2009, 10:38
Сообщение
#8
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
что бы дынные фиксировались обратно в модель, только при нажатии Enter, во всех остальных случаях происходил откат к старым данным. я собственно по вот этой теме думал обозвать, только как кратко написать?Аналогия из области QSqlTableModel::OnRowChange, т.е. что-то вроде QSqlTableModel::RollbackOnRowFieldChange Может быть так: Реализация RollbackOnRowFieldChange с помощью QItemDelegate::eventFilter ?? |
|
|
igor_bogomolov |
15.12.2009, 11:06
Сообщение
#9
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
О. Вон оно как.
Я в общем то не против. Хотя сам бы никогда такую тему не нашел. Может, все таки по Русски как то обозвать. "откат к старым данным при редактировании через делегат" ? Хотя, мне на самом деле без разницы. Делай так как считаешь нужным |
|
|
Litkevich Yuriy |
15.12.2009, 12:48
Сообщение
#10
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
Текстовая версия | Сейчас: 27.12.2024, 4:11 |