如何获取insertRows源

How to get insertRows source?

本文关键字:insertRows 获取 何获取      更新时间:2023-10-16

我正在检测用于项目重排的模型/视图,但我无法理解如何覆盖insertRows方法。只是为了练习,我正在尝试用自定义结构包装std::vector

std::vector<aStruct> mD;//my data
bool insertRows(int start, int rows, const QModelIndex & parent)
{
    auto i = parent.row();
    cout <<"I going to " << start << ":" << rows << " choosing "<< i<< endl;
    beginInsertRows(parent, start, start + rows - 1);
    aStruct blank(0);// Should be the value of the item being moved?
    mD.insert(mD.begin()+start,blank);
    endInsertRows();
    return true;
}

不幸的是,我似乎找不到一个地方来获取那个能让我掌握被移动物品的元素。我该怎么做?

我假设mDinsertRows是自定义模型类的成员。

CCD_ 5没有接收到任何关于插入行的内容的信息。应插入空值。在setData虚拟方法实现中,行应该填充数据。

您应该使用以下步骤插入行:

1. Call beginInsertRows
2. Modify your internal data structure
3. Call endInsertRows

你的样品里没有问题。

视图将插入空行(正如@Riateche所说),并在调用endInsertRows后自动填充。您所需要的只是重写YourModel::data方法,以便从mD结构返回正确的数据。

视图将在插入空行后立即调用YourModel::data方法。你不需要做任何额外的操作。View会关心"填充"它。

当用户想要通过视图小部件更改数据时,YourModel::setData方法的重写主要用于视图和模型之间的交互。