Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从QAbstractTableModel派生类don'中删除行;我不工作,为什么?_C++_Qt_Model View - Fatal编程技术网

C++ 从QAbstractTableModel派生类don'中删除行;我不工作,为什么?

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

我有一个Qt应用程序,我从中派生了自己的模型类。我已经实施了必要的方法。调用方法时,视图中的更改是正确的(要删除的行已删除)

但不知何故,模型上的操作似乎没有传播到我在模型中用来存储数据的QList。当我将存储在QList中的值保存到磁盘时,它看起来好像没有被removeRows从中删除

下面是我的removeRows实现的样子(它基于《高级Qt编程》一书第3章第125页中的代码):

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;
}