gpt4 book ai didi

c++ - 如何从 QStandardItemModel 中删除所有项目

转载 作者:搜寻专家 更新时间:2023-10-31 01:04:52 25 4
gpt4 key购买 nike

我的 QStandardItemModel 有问题。我想要做的是向我的模型添加一个列表,当列表更新时,我在参数中传递新列表,清除旧模型并添加新列表。这听起来很简单,但我遇到了一个我无法弄清楚的错误。当我将第一个列表添加到模型时没有问题,但是当我添加第二个列表时,第一个列表被成功删除(我可以在控制台中看到)但随后应用程序崩溃。

这是我的代码:

void MyModel::updateList(QList<QStandardItem*> list)
{

// Delete current model

int rows = rowCount();
for (int i = 0 ; i < rows ; i++)
{
if(item(0)->hasChildren())
{
int children = item(0)->rowCount();
for (int j = 0 ; j < children ; j++)
{
QString name = item(0)->child(0)->accessibleText();
qDebug()<<(name + QLatin1String("\tremoved"));
item(0)->removeRow(0);
}
}
QString itemRemoved = item(0)->accessibleText();
qDebug()<<(itemRemoved + QLatin1String("\tremoved"));
removeRow(0);
}


// Add new list to model

for(int j=0 ; j<list.count() ; j++)
{
appendRow(list[j]);
qDebug()<< (list[j]->accessibleText() + tr(" ADDED"));
}

printf("List UPDATED \n");
}

显然,我已经尝试使用方法 clear(); 而不是逐行删除,但结果相同。

我不明白为什么这段代码不起作用。

如果有人能对此事有所了解,我将不胜感激。

最佳答案

以下代码在 PyQt 中,但它与您需要的非常相似:

model.removeRows( 0, model.rowCount() )

关于c++ - 如何从 QStandardItemModel 中删除所有项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23269866/

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