dataChanged only works with existing data, you need to call 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);
That should work. Maybe you don't even need emit dataChanged
source share