在搜索有关如何从 QTableView 中删除多行的线索时,我遇到了这个函数:remove selected rows from QTableView
这是代码:-
QItemSelection selection( ui.tableView->selectionModel()->selection() );
QList<int> rows;
foreach( const QModelIndex & index, selection.indexes() ) {
rows.append( index.row() );
}
qSort( rows );
int prev = -1;
for( int i = rows.count() - 1; i >= 0; i -= 1 ) {
int current = rows[i];
if( current != prev ) {
tableModel->removeRows( current, 1 );
prev = current;
}
}
我需要帮助来编写查询。我一直在尝试这个:-
query.exec(QString("DELETE FROM %1 id IN %2").arg(tableName,rows));
但我认为我应该在某处使用 QStringList 但我仍在阅读 QList 示例。有人吗?
最佳答案
由于您似乎正在使用 QSqlTableModel
:
- 在
QSqlTableModel::OnFieldChange
或OnRowChange
模式下,removeRows
也会从数据库中删除记录。 - 在
QSqlTableModel::OnManualSubmit
模式下,您必须在循环结束时调用QSqlTableModel::submitAll()
。
如果您使用的是 QSqlQueryModel
,则必须对该模型进行子类化以在 removeRows
中实现删除。
关于qt - 删除 QTableView 中的多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7372963/