Название: Редактирование QTableView Отправлено: cya-st от Июнь 24, 2010, 14:35 Всем привет...
Странный глюк таблицой, если я устанавливаю setEditStrategy(QSqlTableModel::OnFieldChange);, то при редактировании ячейки в таблице, таблица перестраивается (тоесть курсор остается наместе, под курсором другая строка). При setEditStrategy(QSqlTableModel::OnManualSubmit); такого не происходит. Подскажите пожалуйста в чем проблема. Название: Re: Редактирование QTableView Отправлено: shirushizo от Июнь 24, 2010, 14:47 Если QSqlTableModel::OnFieldChange, то после изменения значения в ячейке представления обновляется модель, потом обновляется представление.
А если стоит QSqlTableModel::OnManualSubmit, то данные в модели не обновляются пока вызвано SubmitAll(), а просто изменяется значение в ячейках. Так что это не проблема, так и должно быть. Название: Re: Редактирование QTableView Отправлено: cya-st от Июнь 24, 2010, 14:56 А почему перестраивается отображение в TableView? Как этого избежать?
Название: Re: Редактирование QTableView Отправлено: lit-uriy от Июнь 24, 2010, 15:14 >>При setEditStrategy(QSqlTableModel::OnManualSubmit); такого не происходит.
а после того, как ты сделаешь submitAll(), происходит перестраивание таблицы? Название: Re: Редактирование QTableView Отправлено: cya-st от Июнь 24, 2010, 16:15 >>При setEditStrategy(QSqlTableModel::OnManualSubmit); такого не происходит. После submitAll() тоже перестраиваетсяа после того, как ты сделаешь submitAll(), происходит перестраивание таблицы? Название: Re: Редактирование QTableView Отправлено: asvil от Июнь 24, 2010, 16:15 Цитировать Как этого избежать? Возможно ответ не обнадежит, но писать свою модель, так как QSqlTableModel после изменения данных при любой политике, перезагружает данные из БД.Название: Re: Редактирование QTableView Отправлено: cya-st от Июнь 24, 2010, 16:23 Цитировать Как этого избежать? Возможно ответ не обнадежит, но писать свою модель, так как QSqlTableModel после изменения данных при любой политике, перезагружает данные из БД.Название: Re: Редактирование QTableView Отправлено: asvil от Июнь 24, 2010, 16:29 Реализацию QAbstractTableModel интерфейса.
Название: Re: Редактирование QTableView Отправлено: cya-st от Июнь 24, 2010, 16:38 Реализацию QAbstractTableModel интерфейса. У меня модель написана, какие виртуальные методы надо переопределить чтобы не перестраивалось отображение?Название: Re: Редактирование QTableView Отправлено: Kolobok от Июнь 24, 2010, 16:38 Ручками восстанавливай состояние view после submit. Это не QTreeView, это не сложно.
Название: Re: Редактирование QTableView Отправлено: asvil от Июнь 24, 2010, 16:44 Надо не методы переопределить, надо чтобы emit reset() не вызывалось.
А можно так как посоветовал Колобок запоминать/выделять нужную запись в представленнии, что впринципе на нет сводит такую возможность как QAbstractItemDelegate::EndEditHint. Название: Re: Редактирование QTableView Отправлено: cya-st от Июнь 24, 2010, 16:47 Ручками восстанавливай состояние view после submit. Это не QTreeView, это не сложно. Не понял что надо сделать. Как можно состояние восстановить?Название: Re: Редактирование QTableView Отправлено: cya-st от Июнь 24, 2010, 16:48 Надо не методы переопределить, надо чтобы emit reset() не вызывалось. emit reset() так это submit надо переопределить?А можно так как посоветовал Колобок запоминать/выделять нужную запись в представленнии, что впринципе на нет сводит такую возможность как QAbstractItemDelegate::EndEditHint. Название: Re: Редактирование QTableView Отправлено: Kolobok от Июнь 24, 2010, 16:55 Не понял что надо сделать. Как можно состояние восстановить? Восстановить состояние скроллбаров и выделение. Для таблицы больше не надо. Название: Re: Редактирование QTableView Отправлено: cya-st от Июнь 24, 2010, 17:00 Не понял что надо сделать. Как можно состояние восстановить? Восстановить состояние скроллбаров и выделение. Для таблицы больше не надо. Название: Re: Редактирование QTableView Отправлено: Kolobok от Июнь 24, 2010, 17:13 Код: int vOffset = view->verticalScrollBar()->value(); примерно так. Название: Re: Редактирование QTableView Отправлено: asvil от Июнь 24, 2010, 17:33 Автору вроде нужно выделение записи, которая редактировалась до обновления модели.
Для этого надо запоминать primaryKey таблицы модели, затем после того как модель обновилась, искать этот primaryKey и делать, грубо говоря, setCurrentIndex() scrollTo() Название: Re: Редактирование QTableView Отправлено: cya-st от Июнь 24, 2010, 17:51 Всем спасибо получилось, просто после select вставил modelMain->setSort(0, Qt::AscendingOrder);. Тему можно закрывать.
|