c++ - 从 QTablewidget 中删除所选项目时发生崩溃

标签 c++ qt qtablewidget

我有一个具有以下设置的 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/

相关文章:

c++ - 比较bcrypt加密后的密码

python - 对齐 qTableWidget 中的可检查项目

c++ - 如何使 QTableWidget 中的单元格小部件的背景不可选?

c++ - 如何在 clang-sanitizer 发现错误时终止 clang-instrumented 程序?

c++ - 内存/速度问题的一般策略

python - 如何在没有中央小部件(PyQt4)的应用程序中设置 QDockWidget 初始(默认)大小?

c++ - 删除最后一行时,QTableWidget 的单元格小部件无法正确显示

用于模板类的 C++ std::tr1::hash

C++风格: Stroustrup' s placement of pointer asterisks

c++ - 如何在 Qt 中将 std::string 转换为 QString?