Russian Qt Forum

Qt => Базы данных => Тема начата: crossly от Ноябрь 13, 2008, 14:30



Название: QSqlQueryModel::setData
Отправлено: crossly от Ноябрь 13, 2008, 14:30
вопрос.... почему при OnFieldChanged модель не эмитирует dataChaged при вызове setData ???
при остальных стратегиях эмит есть...
как мне в таком случает отследить вставку значения...??


Название: Re: QSqlQueryModel::setData
Отправлено: BRE от Ноябрь 13, 2008, 14:50
вопрос.... почему при OnFieldChanged модель не эмитирует dataChaged при вызове setData ???
при остальных стратегиях эмит есть...
как мне в таком случает отследить вставку значения...??
Та наверное имел ввиду QSqlTableModel?

При этой стратегии изменения сразу заносятся в базу данных и из функции updateRowInTable(...) зовется сигнал beforeUpdate ( int row, QSqlRecord & record ).

P.S. updateRowInTable зовется из setData.


Название: Re: QSqlQueryModel::setData
Отправлено: crossly от Ноябрь 13, 2008, 14:56

При этой стратегии изменения сразу заносятся в базу данных и из функции updateRowInTable(...) зовется сигнал beforeUpdate ( int row, QSqlRecord & record ).


это то я и сам знаю.... исходники смотрел.... вопрос в том как узнать о том что данные в базу записались...??


Название: Re: QSqlQueryModel::setData
Отправлено: BRE от Ноябрь 13, 2008, 15:03

это то я и сам знаю.... исходники смотрел.... вопрос в том как узнать о том что данные в базу записались...??
setData вернет true.


Название: Re: QSqlQueryModel::setData
Отправлено: crossly от Ноябрь 13, 2008, 15:04
лана попробую обяъснить по другому... есть у меня модель (стратегия onfieldchanged)... и treewidget... мне по изменении модели нужно обновить treewidget....


Название: Re: QSqlQueryModel::setData
Отправлено: BRE от Ноябрь 13, 2008, 15:22
лана попробую обяъснить по другому... есть у меня модель (стратегия onfieldchanged)... и treewidget... мне по изменении модели нужно обновить treewidget....
А почему выбрана именно эта стратегия?
Я так понимаю, что ее сделали для случая, когда пользователь изменяет значение в ячейке таблицы и переходит на другую ячейку, тогда эти изменения просто фиксируются в базе, обновления таблицы не требуется.


Название: Re: QSqlQueryModel::setData
Отправлено: lit-uriy от Ноябрь 13, 2008, 15:28
treeview? представление, а не виджет?


Название: Re: QSqlQueryModel::setData
Отправлено: crossly от Ноябрь 13, 2008, 15:38
модель отображается ч\з tableview... treewiget отдельно....


Название: Re: QSqlQueryModel::setData
Отправлено: BRE от Ноябрь 13, 2008, 15:53
модель отображается ч\з tableview... treewiget отдельно....
Как вариант унаследоваться от QSqlTableModel и переопределить setData()

Код:
bool SqlTableModel::setData(...)
{
bool ret = QSqlTableModel::setData( ... );
if( ret )
emit dataChanged( index, index );
return ret;
}


Название: Re: QSqlQueryModel::setData
Отправлено: crossly от Ноябрь 13, 2008, 16:10
это всем известный вариант... лана тему в топку....