C++ 从QAbstractTableModel派生类don'中删除行;我不工作,为什么?
我有一个Qt应用程序,我从中派生了自己的模型类。我已经实施了必要的方法。调用方法时,视图中的更改是正确的(要删除的行已删除) 但不知何故,模型上的操作似乎没有传播到我在模型中用来存储数据的QList。当我将存储在QList中的值保存到磁盘时,它看起来好像没有被removeRows从中删除 下面是我的removeRows实现的样子(它基于《高级Qt编程》一书第3章第125页中的代码):C++ 从QAbstractTableModel派生类don'中删除行;我不工作,为什么?,c++,qt,model-view,C++,Qt,Model View,我有一个Qt应用程序,我从中派生了自己的模型类。我已经实施了必要的方法。调用方法时,视图中的更改是正确的(要删除的行已删除) 但不知何故,模型上的操作似乎没有传播到我在模型中用来存储数据的QList。当我将存储在QList中的值保存到磁盘时,它看起来好像没有被removeRows从中删除 下面是我的removeRows实现的样子(它基于《高级Qt编程》一书第3章第125页中的代码): bool MyModel::removows(int行、int计数、常量QModelIndex&) { begi
bool MyModel::removows(int行、int计数、常量QModelIndex&)
{
beginRemoveRows(QModelIndex(),行,行+计数-1);
对于(int i=0;i
我该如何解决这个问题?我错过了什么
谢谢 正如Frank O.所暗示的,如果不看到一些代码,就很难知道发生了什么。但从声音上看,这些值并没有仅仅因为没有取出而从QList中删除。当您从小部件移动到模型/视图类时,您必须自己完成这项工作。也就是说,在removeRows()方法中,您必须“手动”从QList中删除行。就像Frank O.暗示的那样,如果没有看到一些代码,就很难知道发生了什么。但从声音上看,这些值并没有仅仅因为没有取出而从QList中删除。当您从小部件移动到模型/视图类时,您必须自己完成这项工作。例如,在removeRows()方法中,您必须“手动”从QList中删除行。事实证明,我的removeRows实现没有任何问题 在显示对话框之前,我的单元测试调用了save方法。对话框根本没有调用save方法
难怪更改在视图中可见,而在输出文件中不可见 事实证明,我的removeRows实现没有任何问题 在显示对话框之前,我的单元测试调用了save方法。对话框根本没有调用save方法
难怪更改在视图中可见,而在输出文件中不可见 你应该发布一些代码,特别是你的removeRows()impl.谢谢,我用我的removeRows()代码更新了我的问题。你应该发布一些代码,特别是你的removeRows()impl.谢谢,我用我的removeRows()代码更新了我的问题。
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;
}