qt - 删除 QTableView 中的多行

标签 qt sqlite qt4 qlist

在搜索有关如何从 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::OnFieldChangeOnRowChange 模式下,removeRows 也会从数据库中删除记录。
  • QSqlTableModel::OnManualSubmit 模式下,您必须在循环结束时调用 QSqlTableModel::submitAll()

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

关于qt - 删除 QTableView 中的多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7372963/

相关文章:

c++ - 调用进程退出后是否可以将 DLL 保留在内存中?

c++ - 如何使用 QT 设置 PATH 变量?

c++ - 在 Eclipse 中使用自己的 Makefile 导入现有的 QT C++ 项目

c++ - 将基于像素的图形绘制到 QWidget

c++ - 在QML中访问C++对象的成员变量

c++ - Qt 中未捕获异常

c++ - 连接柯南包与普通Qt目录

c++ - "Dr. sqlite3_bind_text"和 "Mr. sqlite3_column_text"之谜

ruby - 无法使用 DataMapper 在 SQLite 中创建新实体

android - SqliteConstraintException Android