![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
skmdeveloper |
![]()
Сообщение
#1
|
Студент ![]() Группа: Участник Сообщений: 23 Регистрация: 18.9.2009 Пользователь №: 1107 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
У меня класс унаследованный от QTableView.
После редактирования значения активной становится следующая ячейка - справа, а на последнем столбце в насале следующей строки. Есть ли возможность, чтобы текущая ячейка не менялась? В документации не нашёл. |
|
|
![]() |
MoPDoBoPoT |
![]()
Сообщение
#2
|
Участник ![]() ![]() Группа: Участник Сообщений: 172 Регистрация: 7.5.2009 Из: Москва Пользователь №: 738 Спасибо сказали: 44 раз(а) Репутация: ![]() ![]() ![]() |
Это нестандартное поведение. Почитай про QAbstractItemView::closeEditor() и QAbstractItemDelegate::EndEditHint.
Сообщение отредактировал MoPDoBoPoT - 7.5.2011, 23:03 |
|
|
Iron Lappu |
![]()
Сообщение
#3
|
Новичок Группа: Новичок Сообщений: 9 Регистрация: 30.3.2011 Пользователь №: 2558 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Этим хозяйством заведует делегат твоего представления.
Событие окончания редактирования определяется нажатием клавиш клавиатуры и мыши. Обработкой событий занимается виртуальная функция QObject::eventFilter(). Она переопределяется в классе делегата и задает обработку по умолчанию. Непосредственно сам процесс редактирования заканчивается посылом сигнала
Тебя интересует второй параметр hint. Он определяет каким образом закончить редактирования. Вот возможные варианты: QAbstractItemDelegate::NoHint 0 There is no recommended action to be performed. QAbstractItemDelegate::EditNextItem 1 The view should use the delegate to open an editor on the next item in the view. QAbstractItemDelegate::EditPreviousItem 2 The view should use the delegate to open an editor on the previous item in the view. ... Наследуй класс от QItemDelegate (или QAbstractItemDelegate, или QStyledItemDelegate), переопредели функцию eventFilter, создав свой обработчик событий. (Посмотри пример реализации bool QItemDelegate::eventFilter(QObject *object, QEvent *event) в исходниках.) |
|
|
Litkevich Yuriy |
![]()
Сообщение
#4
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
наследуй класс от QItemDelegate (или QAbstractItemDelegate, или QStyledItemDelegate), переопредели функцию eventFilter, создав свой обработчик событий. фильтр событий для того и придуман, чтобы не наследоваться. (подробности в описании метода QObject::eventFilter())
|
|
|
Iron Lappu |
![]()
Сообщение
#5
|
Новичок Группа: Новичок Сообщений: 9 Регистрация: 30.3.2011 Пользователь №: 2558 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
наследуй класс от QItemDelegate (или QAbstractItemDelegate, или QStyledItemDelegate), переопредели функцию eventFilter, создав свой обработчик событий. фильтр событий для того и придуман, чтобы не наследоваться. (подробности в описании метода QObject::eventFilter())Да, фильтр событий для того и придуман, чтобы объект имел возможность проводить обработку событий других объектов и тем самым эти другие элементы не надо было наследовать. Но я ведь не предлагаю наследовать каждый виджет редактирования (и врядли это даст толку), а наследоваться от делегата. Конечно, можно использовать, к примеру, производный класс представления, который регистрирует себя функцией installEventFilter() в качестве перехватчика событий своего делегата и тем самым в функции eventFilter() за него обрабатывает события, но это уже другая история... |
|
|
Litkevich Yuriy |
![]()
Сообщение
#6
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
фильтр событий можно повесить где угодно, например в виджете-окне.
|
|
|
Iron Lappu |
![]()
Сообщение
#7
|
Новичок Группа: Новичок Сообщений: 9 Регистрация: 30.3.2011 Пользователь №: 2558 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
фильтр событий можно повесить где угодно, например в виджете-окне. Но где-то же надо? ![]() Кстати, Litkevich Yuriy, скажите пожалуйста, почему я не могу изменить свои личные данные? Выдает "Вам запрещено использование этой функции форума". Хотел написать вам личное сообщение, но все то же. |
|
|
skmdeveloper |
![]()
Сообщение
#8
|
Студент ![]() Группа: Участник Сообщений: 23 Регистрация: 18.9.2009 Пользователь №: 1107 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Выяснилось что после окончания редактирования ячейки в QTabView генерируется нажатие клавиши Tab, чтобы перейти на следующую ячейку. Перехватил
Некошерно, но работает. Перемещение нажатием клавиши Tab функционирует. Сообщение отредактировал skmdeveloper - 13.5.2011, 7:57 |
|
|
Litkevich Yuriy |
![]()
Сообщение
#9
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
Кстати, Litkevich Yuriy, скажите пожалуйста, почему я не могу изменить свои личные данные? Выдает "Вам запрещено использование этой функции форума". Хотел написать вам личное сообщение, но все то же. 20 полезных сообщений и у вас автоматом появится такая возможность
|
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 22.6.2025, 1:48 |