qlist - 如何更新特定的 QAbstractListModel 项目?

标签 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;
                         });
}

最佳答案

这是我找到的解决方案:

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));
    }
}

关于qlist - 如何更新特定的 QAbstractListModel 项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44306736/

相关文章:

c++ - QList 指向抽象类的指针函数

c++ - Qt TreeView 获取总行数,考虑展开和折叠的文件夹

qt - QModelIndexList 的析构函数太慢

python - 是什么触发 QTreeView 在 QAbstractItemModel.data() 函数中请求 SizeHintRole

c++ - 如何遍历 QStringList

c++ - 如果列表为空,QList::first() 会返回什么?

python - 从过滤后的 QListView 中获取所选项目

c++ - Qt-Qml : Binding checkbox to QAbstractListModel

c++ - 在单个变量中检索不同的 Qmap

c++ - 使用模型作为 QMenu 的源