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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Редактирование QTableView  (Прочитано 10623 раз)
cya-st
Гость
« : Июнь 24, 2010, 14:35 »

Всем привет...
Странный глюк таблицой, если я устанавливаю setEditStrategy(QSqlTableModel::OnFieldChange);, то при редактировании ячейки в таблице, таблица перестраивается (тоесть курсор остается наместе, под курсором другая строка). При setEditStrategy(QSqlTableModel::OnManualSubmit); такого не происходит. Подскажите пожалуйста в чем проблема.
Записан
shirushizo
Гость
« Ответ #1 : Июнь 24, 2010, 14:47 »

Если QSqlTableModel::OnFieldChange, то после изменения значения в ячейке представления обновляется модель, потом обновляется представление.
А если стоит QSqlTableModel::OnManualSubmit, то данные в модели не обновляются пока вызвано SubmitAll(), а просто изменяется значение в ячейках.
Так что это не проблема, так и должно быть.
Записан
cya-st
Гость
« Ответ #2 : Июнь 24, 2010, 14:56 »

А почему перестраивается отображение в TableView? Как этого избежать?
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #3 : Июнь 24, 2010, 15:14 »

>>При setEditStrategy(QSqlTableModel::OnManualSubmit); такого не происходит.
а после того, как ты сделаешь submitAll(), происходит перестраивание таблицы?
Записан

Юра.
cya-st
Гость
« Ответ #4 : Июнь 24, 2010, 16:15 »

>>При setEditStrategy(QSqlTableModel::OnManualSubmit); такого не происходит.
а после того, как ты сделаешь submitAll(), происходит перестраивание таблицы?
После submitAll() тоже перестраивается
Записан
asvil
Гость
« Ответ #5 : Июнь 24, 2010, 16:15 »

Цитировать
Как этого избежать?
Возможно ответ не обнадежит, но писать свою модель, так как QSqlTableModel после изменения данных при любой политике, перезагружает данные из БД.
Записан
cya-st
Гость
« Ответ #6 : Июнь 24, 2010, 16:23 »

Цитировать
Как этого избежать?
Возможно ответ не обнадежит, но писать свою модель, так как QSqlTableModel после изменения данных при любой политике, перезагружает данные из БД.
В модели то что писать?
Записан
asvil
Гость
« Ответ #7 : Июнь 24, 2010, 16:29 »

Реализацию QAbstractTableModel интерфейса.
Записан
cya-st
Гость
« Ответ #8 : Июнь 24, 2010, 16:38 »

Реализацию QAbstractTableModel интерфейса.
У меня модель написана, какие виртуальные методы надо переопределить чтобы не перестраивалось отображение?
Записан
Kolobok
Гость
« Ответ #9 : Июнь 24, 2010, 16:38 »

Ручками восстанавливай состояние view после submit. Это не QTreeView, это не сложно.
Записан
asvil
Гость
« Ответ #10 : Июнь 24, 2010, 16:44 »

Надо не методы переопределить, надо чтобы emit reset() не вызывалось.
А можно так как посоветовал Колобок запоминать/выделять нужную запись в представленнии, что впринципе на нет сводит такую возможность как QAbstractItemDelegate::EndEditHint.
Записан
cya-st
Гость
« Ответ #11 : Июнь 24, 2010, 16:47 »

Ручками восстанавливай состояние view после submit. Это не QTreeView, это не сложно.
Не понял что надо сделать. Как можно состояние восстановить?
Записан
cya-st
Гость
« Ответ #12 : Июнь 24, 2010, 16:48 »

Надо не методы переопределить, надо чтобы emit reset() не вызывалось.
А можно так как посоветовал Колобок запоминать/выделять нужную запись в представленнии, что впринципе на нет сводит такую возможность как QAbstractItemDelegate::EndEditHint.
emit reset() так это submit надо переопределить?
Записан
Kolobok
Гость
« Ответ #13 : Июнь 24, 2010, 16:55 »

Не понял что надо сделать. Как можно состояние восстановить?

Восстановить состояние скроллбаров и выделение. Для таблицы больше не надо.
Записан
cya-st
Гость
« Ответ #14 : Июнь 24, 2010, 17:00 »

Не понял что надо сделать. Как можно состояние восстановить?

Восстановить состояние скроллбаров и выделение. Для таблицы больше не надо.
Поподробнее можно?
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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