我有一个具有以下设置的 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);
关于c++ - 从 QTablewidget 中删除所选项目时发生崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8845069/