2017-06-01 2 views
0

Ich habe eine Klasse FeedItemViewModel von QAbstractListModel abgeleitet. Ich habe eine Methode implementiert, die Elemente in dem Listenmodell hinzufügt, aber ich weiß nicht, wie ein Element aktualisiert wird, das eine bestimmte ID hat. HierWie kann ich ein bestimmtes QAbstractListModel-Element aktualisieren?

ist der Code:

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

Antwort

0

Hier ist die Lösung, die ich gefunden:

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