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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как выйти из режима редактирования ячейки  (Прочитано 4409 раз)
Evgeniya
Гость
« : Февраль 12, 2010, 14:14 »

Доброго всем времени суток...
Есть таблица в которой на некоторые столбцы установлен делегат...
И вот с помощью слота
void   edit ( const QModelIndex & index ) я могу войти прогрммно в режим редактирования ячейки... А с есть такой слот,чтобы я смогла выйти из режима редактирования ячейки.. Ведь по умолчания выйти из режима редактирования я могу только при выделении следующей ячейке именно мышкой..
Я например,хочу сделать так...как обычно при нажатии на клавиатуре стрелочки вниз выделяются следующие за текущей строчки, а мне надо чтобы при нажатии стрелочки вниз выходил из режима редактирования предыдущий элемент и заходил следующий
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #1 : Февраль 12, 2010, 14:20 »

closePersistentEditor
Подойдёт?
Записан

Юра.
Evgeniya
Гость
« Ответ #2 : Февраль 12, 2010, 14:42 »

Он выходит из режима редактирования,только данные не сохранят  Злой
Записан
Evgeniya
Гость
« Ответ #3 : Февраль 12, 2010, 15:07 »

Делаю update(const QModelIndex & index ), а потом closePersistentEditor все-равно не помогает...он выходит из режима редактирования, а данные не сохраняет
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #4 : Февраль 12, 2010, 15:14 »

попробуй тогда просто менять текущий индекс, setCurrentIndex
можно например так:
selectionModel()->setCurrentIndex(index, QItemSelectionModel::NoUpdate);
Записан

Юра.
SABROG
Гость
« Ответ #5 : Февраль 12, 2010, 21:56 »

Нужно переопределить pressKeyEvent у виджета который выступает в роли editor'а итема, при нажатии на стрелочки клавиатуры слать какой-нибудь сигнал. Сигнал подвязываешь к делегату, а там уже выполняешь эти методы:

Код
C++ (Qt)
   emit commitData(editor);
   emit closeEditor(editor, QAbstractItemDelegate::EditNextItem);
 

Затем наследуешься от вьюхи и переопределяешь слот:

void QAbstractItemView::closeEditor ( QWidget * editor, QAbstractItemDelegate::EndEditHint hint )   [virtual protected slot]

Тут уже перемещаешь редактирование в нужное место. Единственное надо добавить в namespace EndEditHint 4 своих значения, чтобы перемещаться на любую сторону света.
Записан
Evgeniya
Гость
« Ответ #6 : Февраль 16, 2010, 15:58 »

SABROG,спасибо за ответ!!!Очень полезный...правда я теперь по другому хочу сделать..я хочу чтобы при нажатии Tab у меня редактор скакал по порядку по всему столбцу таблицы и вызывался бы редактор.. Но когда заканчивается редактирование предыдущего элемента,я обновляю данные модели методом setQuery(),то текущие индексы модели обнуляются и всегда начинается с редактирования нулевого элемента... Если я не обновляю данные модели,то все нормально происходит ... при нажатии на Tab все редактируется,только данные не обновляются. Как же можно решить данную ситуацию?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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