它是this question的更具体版本。
我想向视图报告我将在模型中插入一些行。有两种方法可以调用beginInsertRows
:
beginInsertRows(QModelIndex(), first, last)
和
beginInsertRows(createIndex(-1,-1), first, last)
存在差异:在第二个变体QModelIndex
中将存储指向我们模型内部的指针。在Qml内部:
void QQuickVisualDataModel::_q_rowsInserted(const QModelIndex &parent, int begin, int end)
{
Q_D(QQuickVisualDataModel);
qDebug() << "d->m_adaptorModel.rootIndex = " << d->m_adaptorModel.rootIndex;
if (parent == d->m_adaptorModel.rootIndex)
_q_itemsInserted(begin, end - begin + 1);
}
if
语句的主体不会被执行,因为rootIndex
似乎总是不存储指向模型的指针(即它存储NULL)
所以,我的问题是: 是错误还是功能?有人在我之前试过这个错误的调用吗?