作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我的 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/
我是一名优秀的程序员,十分优秀!