如何调用数据已更改

How do I call dataChanged

本文关键字:数据 调用 何调用      更新时间:2023-10-16

以下是我的添加行类。它是由代码而不是表调用的,我希望它正确调用 dataChanged 添加新行时更改,尽管这不起作用,但表不执行任何操作。我做错了什么?

void MyModel::add(const Person& p)
{
    people.push_back(p);
    QModelIndex top = createIndex(people.count() - 1, 0, 0);
    QModelIndex bottom = createIndex(people.count() - 1, 3, 0);
    emit dataChanged(top, bottom); // emit layoutChanged() if headers changed
}

dataChanged仅适用于现有数据,您需要调用beginInsertRows()/endInsertRows()

void MyModel::add(const Person& p)
{
    beginInsertRows(QModelIndex(), people.count(), people.count());
    people.push_back(p);
    endInsertRows();
    QModelIndex top = createIndex(people.count() - 1, 0, 0);
    QModelIndex bottom = createIndex(people.count() - 1, 3, 0);
    emit dataChanged(top, bottom); // emit layoutChanged() if headers changed
}

这应该行得通。也许你甚至不需要emit dataChanged