我如何调用 dataChanged

Posted

技术标签:

【中文标题】我如何调用 dataChanged【英文标题】:How do I call dataChanged 【发布时间】:2011-05-14 11:00:34 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

以上是关于我如何调用 dataChanged的主要内容,如果未能解决你的问题,请参考以下文章

SpringMVC如何调用外部接口?最好能给个接收的方法我参考下。

SAP 如何调用我的webservice?

如何防止 redux-saga 调用我的 api 调用两次?

如何找到调用某个函数的地方?

反射:如何使用参数调用方法

如何调试 jquery AJAX 调用?