此函数应从附加到QTable View的QStandardItemModel中删除一行。
void ModManager::delete_Addin(int index)
{
QString addinId;
int i;
addinId = tableModel->item(index,0)->text();
for(i=0;i<modList->size();i++)
{
if(modList->at(i)->Id() == addinId)
{
delete modList->takeAt(i);
break;
}
}
tableModel->removeRow(index);
}
奇怪的是,程序在最后一条指令tableModel->removeRow(index);
崩溃了
并且它不会超出范围,因为tableModel->item(index,0)
是有效的。
那可能是什么呢?
答案 0 :(得分:0)
代码不会显示modList
和tableModel
之间的相关性。更改tableModel->item(index,0)
之前modList
有效,而修改后tableModel->rowAt(index)
无效。有几种可能性:
修改modList
影响tableModel
,正如@vahancho所暗示的那样。这可以通过注释for循环或更改行的顺序来验证。这可以通过使用modList
作为tableModel
的真实数据来引导,例如,您是通过将modList->at(i)
作为QTableModel::Data
返回并返回modList->count()
来实现自定义QTableModel } QTableModel::rowCount()
?
modList
不会影响tableModel
,但该项目已在其他地方引用。从代码中无法分辨出来。