我有一个具有以下设置的QTablewidget
tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
tableWidget->setSelectionMode(QAbstractItemView::ExtendedSelection);
我试图删除用户选择的行并使用以下代码。但是,它会导致崩溃时选择和删除所有项目。以下方法正确吗?谢谢。
tableWidget->setSortingEnabled(false);
QList<QTableWidgetItem *> selectedEntries = tableWidget->selectedItems();
foreach(QTableWidgetItem * currentItem, selectedEntries)
{
if (currentItem->row()!=-1)
tableWidget->removeRow(currentItem->row());
}
tableWidget->setSortingEnabled(true);
最佳答案
这种操作的风格略有不同,可以在Nokia dev forums中找到,它是Ruzik提供的经过改进的形式。
QSet<int> selectedRows; //we use a set to prevent doubles
QList<QTableWidgetItem*> itemList = tableWidget->selectedItems();
QTableWidgetItem * item;
foreach(item, itemList)
selectedRows.insert(item->row());
//get a list, and sort it big to small
QList<int> rows = selectedRows.toList();
qSort(rows.begin(), rows.end());
//now actually do the removing:
foreach(int row, rows)
tableWidget->removeRow(row);