Russian Qt Forum

Qt => Базы данных => Тема начата: bigirbis от Август 21, 2007, 09:17



Название: QSqlTableModel::insertRow()
Отправлено: bigirbis от Август 21, 2007, 09:17
Народ, вот столкнулся с такой тупейшей проблемой: добавление новой записи программно в QSqlTableModel.

Так работает:
Код:
QSqlRecord rec = tableModel->record();
rec.setValue( 1, "qwe" );
tableModel->insertRecord( tableModel->rowCount(), rec );
tableModel->submitAll();

А так - нет:
Код:
QSqlRecord rec = tableModel->record();
tableModel->insertRecord( tableModel->rowCount(), rec );
tableModel->submitAll();

Вопрос состоит в том, как грамотно добавить строку c дефолтовыми параметрами через QSqlTableModel.
Заранее спасибо!

PS: Qt 4.2.2


Название: Re: QSqlTableModel::insertRow()
Отправлено: linuxoid от Август 21, 2007, 13:35
Всё элементарно:

QSqlTableModel *model = qobject_cast<QSqlTableModel *>(tableView->model());
     QModelIndex insertIndex = tableView->currentIndex();
     int row = insertIndex.row() == -1 ? 0 : insertIndex.row();
     model->insertRow(row);
     insertIndex = model->index(row, 0);
     tableView->setCurrentIndex(insertIndex);
     tableView->edit(insertIndex);


Название: Re: QSqlTableModel::insertRow()
Отправлено: linuxoid от Август 21, 2007, 13:37
А теперь ты мне помоги!как вставить грамотно новую сроку ячеек в QSqlQueryModel


Название: Re: QSqlTableModel::insertRow()
Отправлено: Sergey B. от Август 21, 2007, 13:49
QSqlQueryModel  вроде как result of query... И она не сохраняет данные в базе.