我有一个QTableView和一个QSqlTableModel。当我更新QTableView中的单元格时,我正在调用“submitall”函数来更新数据库。
“Submitall”已激活,但数据库中没有任何变化,我不知道原因。
这是我的代码:
connect(ui->tableView->model(), SIGNAL(dataChanged(QModelIndex,QModelIndex,QVector<int>)), this, SLOT(slot_commitChanges()));
QSqlTableModel *biensEssentielsModele = new QSqlTableModel();
biensEssentielsModele->setTable("biensEssentiels");
biensEssentielsModele->setEditStrategy(QSqlTableModel::OnManualSubmit);
biensEssentielsModele->select();
biensEssentielsModele->removeColumn(0);
slot_commitChanges()函数:
if(biensEssentielsModele->submitAll())
qDebug() << "OK"; // This is the input I get
else
qDebug() << "NOK";
我也试过使用交易,但结果是一样的。
数据库是SQLITE。
感谢任何帮助
谢谢:)。
编辑:我忘了提到我的数据库是一个sqlite文件。
更新:我刚刚意识到,当我添加一行(带有一个调用插槽的按钮“slot_addBiensEssentiels”)时,在数据库中更新了1个单元格中的更改。完成后,其他单元格不会更改
这是我的插槽代码“slot_addBiensEssentiels”:
biensEssentielsModele->insertRow(biensEssentielsModele->rowCount());
答案 0 :(得分:1)
我发现了什么问题。
我不得不改变:
biensEssentielsModele->removeColumn(0);
到:
ui->tableView->hideColumn(0);
&#34; removeColumn()&#34;由于缺少列和引用而在尝试更新数据库时导致了一些问题。