C++ 我如何称呼数据更改

C++ 我如何称呼数据更改,c++,qt4,qtableview,qabstracttablemodel,C++,Qt4,Qtableview,Qabstracttablemodel,下面是我的添加行类。它是由代码调用的,而不是由表调用的,我希望它在添加新行时正确地调用dataChanged,尽管这不起作用,但表没有做任何事情。 我做错了什么 void MyModel::add(const Person& p) { people.push_back(p); QModelIndex top = createIndex(people.count() - 1, 0, 0); QModelIndex bottom = createIndex(peop

下面是我的添加行类。它是由代码调用的,而不是由表调用的,我希望它在添加新行时正确地调用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
}