gpt4 book ai didi

c++ - 我如何调用 dataChanged

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:25:42 26 4
gpt4 key购买 nike

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

关于c++ - 我如何调用 dataChanged,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6001376/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com