2012-01-18 315 views

回答

0

如果要刪除表末尾的一些行,可以嘗試使用setRowCount(int row)。

我一直在尋找一種方法,可以從表格中不同位置的多個選定行中移除。

我結束了從底部遍歷我選擇的列表以刪除我的表。

+0

我不想從底部刪除。我想刪除從任何地方選擇的多行。 – joki 2012-01-18 09:25:34

0
QList<QTableWidgetItem*> itemList = widget->selectedItems(); 
for(int i = 0; i < itemList.size(); i++) { 
    widget->removeCellWidget(itemList.at(i)->row(), itemList.at(i)->column()); 
} 
+0

無法一次刪除多個項目 – Neox 2012-01-18 10:40:51

+0

感謝您的幫助。但是我無法從表中刪除至少一個項目:( – joki 2012-01-18 12:46:17

+0

是選擇的項目? – Neox 2012-01-18 12:50:31

-1

也許這可以幫助:

QList<QTableWidgetItem*> selected_itms = ur_table->selectedItems(); 
while(!selected_itms.isEmpty()) 
{ 
    QTableWidgetItem *itm = selected_itms.at(0); 
    ur_table->removeRow(itm->row()); 
    selected_itms = ui.tblw_entries->selectedItems(); 
} 
+0

什麼是selected_rows?它是如何設置的? – Ashot 2013-05-23 06:55:29

+0

@Ashot〜>這是一個錯誤! – saeed 2013-05-23 11:22:13

+0

一個仍然是'QTableWidgetItem * itm = selected_rows.at(0);'也最好是以相反的順序刪除選定的行 – Ashot 2013-05-23 11:26:33

2

您可以一次刪除多個項目,則提示,是開始從底部刪除行。我很抱歉,我不是VS2008開發者,但是這個解決方案可以很容易地轉換成VS2008代碼。這裏是Python代碼。對不起,遲到的迴應:)

# Delete the selected mytable lines 
deleteRows(self.mytable.selectionModel().selectedRows()) 

# DeleteRows function 
def deleteRows(self, rows): 
     # Get all row index 
     indexes = [] 
     for row in rows: 
      indexes.append(row.row()) 

     # Reverse sort rows indexes 
     indexes = sorted(indexes, reverse=True) 

     # Delete rows 
     for rowidx in indexes: 
      self.mytable.removeRow(rowidx)