Удаление нескольких строк в QTableView - PullRequest
3 голосов
/ 10 сентября 2011

При поиске подсказок о том, как я могу удалить несколько строк из 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 голосов
/ 10 сентября 2011

Поскольку вы, похоже, используете QSqlTableModel:

  • в режимах QSqlTableModel::OnFieldChange или OnRowChange, removeRows также удаляет записи из базы данных.
  • в режиме QSqlTableModel::OnManualSubmit вы должны позвонить QSqlTableModel::submitAll() в конце цикла.

Если бы вы использовали QSqlQueryModel, вам пришлось бы создать подкласс этой модели для реализации удаления в removeRows.

...