如何更新特定的QAbstractListModel项?

时间:2017-06-01 11:49:52

标签: qlist qabstractitemmodel qabstractlistmodel

我从QAbstractListModel派生了一个FeedItemViewModel类。 我已经实现了一个在列表模型中添加项目的方法,但我不知道如何更新具有特定id的项目。

以下是代码:

void FeedItemViewModel::addFeedItem(FeedItem* feedItem)
{
    beginInsertRows(QModelIndex(), rowCount(), rowCount());
    m_feedItems.append(feedItem);
    endInsertRows();
}

void FeedItemViewModel::updateFeedItem(FeedItem* feedItem)
{
    int id = feedItem->id();
    auto iter = std::find_if(m_feedItems.begin(), m_feedItems.end(),
                         [id](FeedItem* item)
                         {
                            return item->id() == id;
                         });
}

1 个答案:

答案 0 :(得分:1)

以下是我找到的解决方案:

void FeedItemViewModel::updateFeedItem(FeedItem* feedItem)
{
    int id = feedItem->id();
    auto iter = std::find_if(m_feedItems.begin(), m_feedItems.end(),
                             [id](FeedItem* item)
    {
            return item->id() == id;
    });

    if(iter != m_feedItems.end())
    {
        int indx = m_feedItems.indexOf(*iter);
        m_feedItems[indx] = feedItem;
        dataChanged(index(indx), index(indx));
    }
}