【发布时间】:2011-09-29 00:18:42
【问题描述】:
我正在尝试为 QTreeView 实现 QAbstractItemModel。我在插入行时遇到问题。 我注意到,如果我在应用程序的开头插入,一切正常。但是如果我稍后插入行 - 在一些其他操作(如选择等)之后,新项目保持不可见。此外,QTreeView 似乎根本不起作用!我是否必须发出一些信号来通知 QTreeView 关于行插入?
这是我的插入方法:
bool LayersModel::insertRows(int position, int count, const QModelIndex & parent)
{
LayersModelItem * parentItem = getItem(parent);
if (position > parentItem->childCount())
return false;
beginInsertRows(parent,position,position+count-1);
bool result = true;
for (;count;--count)
result &= parentItem->insertChildren(position, new LayersModelItem());
endInsertRows();
return result;
}
LayersModelItem 是具有 QList 及其子级和数据的类。
我的项目的完整代码(需要 KDE 库)在这里: https://github.com/coder89/PhotoFramesEditor/tree/v0.0.8 要查看问题,请在主窗口中选择一个蓝色项目,然后右键单击它并选择“删除项目”。 (这个方法在 Canvas::removeItems() 中)并且它被完整地评论了 - 我很绝望,我试图找到这个问题的原因......(实际上它没有删除任何东西 - 它添加了新项目)。
感谢您的帮助和建议!
【问题讨论】:
标签: qt insertion qtreeview qabstractitemmodel