2011-09-10 74 views
3

多行雖然尋找關於如何從QTableView中刪除多行線索,我碰到這個功能:remove selected rows from 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; 
     } 
    } 

我需要幫助寫查詢做that.I一直在嘗試這樣的: -

query.exec(QString("DELETE FROM %1 id IN %2").arg(tableName,rows)); 

,但我覺得我應該在什麼地方使用QStringList中,但我仍然在讀的QList examples.A nyone?

回答

5

既然你似乎是使用QSqlTableModel

  • QSqlTableModel::OnFieldChangeOnRowChange模式,removeRows也從數據庫中刪除的記錄。
  • in QSqlTableModel::OnManualSubmit mode你必須在循環結束時調用QSqlTableModel::submitAll()

如果您使用的是QSqlQueryModel,則必須繼承該模型以實現removeRows中的刪除。

+0

真棒,它使用OnRowChange – Gandalf