我们应该如何在调用beginInsertRows(parent,first,last)时创建父QModelIndex?

Kak*_*adu 5 qt listview models qml qmodelindex

这是这个问题的更具体版本。

我想向视图报告我将向我的模型插入一些行。有两种调用方式beginInsertRows

beginInsertRows(QModelIndex(), first, last)
Run Code Online (Sandbox Code Playgroud)

beginInsertRows(createIndex(-1,-1), first, last)
Run Code Online (Sandbox Code Playgroud)

有一个区别:在第二个变体中,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);
}
Run Code Online (Sandbox Code Playgroud)

语句主体if不会被执行,因为它似乎rootIndex总是不存储指向模型的指针(即它存储 NULL)

我已经创建了测试 Qt5 应用程序

所以,我的问题是: 这是错误还是功能?有人在我之前尝试过这个错误的调用吗?