在QTableView中删除多行

Gan*_*alf 3 sqlite qt qt4 qlist

在搜索有关如何从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;
       }
    }
Run Code Online (Sandbox Code Playgroud)

我需要帮助编写查询这样做.我一直在尝试这个: -

query.exec(QString("DELETE FROM %1 id IN %2").arg(tableName,rows));
Run Code Online (Sandbox Code Playgroud)

但我想我应该在某个地方使用QStringList,但我还在阅读QList的例子.任何人?

ale*_*sdm 5

因为您似乎使用了QSqlTableModel:

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

如果您使用的是a QSqlQueryModel,则必须将该模型子类化以实现其中的删除removeRows.