2017-06-01 108 views
0

我從QAbstractListModel派生了一個類FeedItemViewModel。 我已經實現了添加列表模型中的項目的方法,但我不知道如何更新具有特定標識的項目。如何更新特定的QAbstractListModel項目?

下面是代碼:

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

回答

0

這裏是我找到了解決辦法:

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)); 
    } 
} 
相關問題