2012-01-18 314 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)