c++ - 从 QAbstractTableModel 派生类中删除行不起作用,为什么?

标签 c++ qt model-view

我有一个 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/

相关文章:

c++ - 使用函数在 cin 和 ifstream 之间切换

c++ - 检查 UTF-8 字符串在 Qt 中是否有效

html - 如何在 QWebEngineView 中禁用工具提示(标题)的自动换行

qt - QListView 带有用于查看文件系统的复选框

java - 等待按钮被按下 JAVA GUI

c++ - CMakeList.txt 中应该包含什么模块来进行近似最近邻搜索?

c++ - C 库链接到 C++

c++ - 与 MinGW (v.4.3.0) 和 libhid 的链接问题

c++ - Qt 模型 View :更新模型的正确方法是什么,然后在 std::vector 中的模型外部存储和更改数据时的 View

c++ - 是在索引一个新的 map 元素并将读取它的东西分配给它未定义的行为,还是只是未指定的?