在 QTableView 中删除多行

3

在寻找如何从QTableView中删除多个行的线索时,我遇到了这个函数:从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的示例。有人可以帮忙吗?

1个回答

5

由于您似乎正在使用 QSqlTableModel

  • QSqlTableModel::OnFieldChangeOnRowChange 模式下,removeRows 还会从数据库中删除记录。
  • QSqlTableModel::OnManualSubmit 模式下,您必须在循环结束时调用 QSqlTableModel::submitAll()

如果您使用的是 QSqlQueryModel,则需要对该模型进行子类化以在 removeRows 中实现删除。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接