我有一个 Qt 应用程序,我从 QAbstractTableModel 派生了自己的模型类.我已经将必要的方法实现为 prescribed in the documentation .当我调用 removeRows方法更改在我的 View 中是正确的(我想删除的行已删除)。
但不知何故,模型上的操作似乎没有传播到我在模型中用来存储数据的 QList。当我将存储在 QList 中的值保存到磁盘时,似乎没有任何内容被 removeRows 从中删除。
这是我的 removeRows 实现的样子(它基于高级 Qt 编程,第 3 章,第 125 页中的代码):
bool MyModel::removeRows(int row, int count, const QModelIndex&)
{
beginRemoveRows( QModelIndex(), row, row + count - 1);
for (int i = 0; i < count; ++i) {
mMyQList.removeAt(row);
}
endRemoveRows();
return true;
}
我该如何解决这个问题?我错过了什么?
谢谢!
最佳答案
就像 Frank O. 暗示的那样,如果不看一些代码就很难知道发生了什么。但是从它的声音来看,这些值并没有从 QList 中删除,仅仅是因为您没有将它们取出。当您从 Widget 转移到 Model/View 类时,您必须自己做这件事。即,在您的 removeRows() 方法中,您必须“手动”从 QList 中删除行。
关于c++ - 从 QAbstractTableModel 派生类中删除行不起作用,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5445617/