2011-09-10 4 views
3

の複数の行を削除:ここremove selected rows from QTableView私はこの機能に出くわした私は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にexamples.Aを読んでいます - :that.Iを行うクエリは、このことをしようとしていますニヨン?

答えて

5

あなたがQSqlTableModelを使用しているように見えるので:

QSqlTableModel::OnFieldChangeまたは OnRowChangeモードで
  • removeRowsは、データベースからレコードを削除します。
  • QSqlTableModel::OnManualSubmitモードでは、ループの最後にQSqlTableModel::submitAll()を呼び出す必要があります。

あなたがQSqlQueryModelを使用していた場合、あなたはremoveRows内の削除を実装するために、そのモデルをサブクラス化する必要があります。

+0

素晴らしいですが、OnRowChange – Gandalf