gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 12:20:19 24 4
gpt4 key购买 nike

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com