Используй setData вместо append
Он хочет добавлять строку с данными, а не изменять их. Для этого надо переопределить метод insertRows() примерно так:
C++ (Qt)
bool mymodel::insertRows(int row, int count/* = 1*/, const QModelIndex &parent/* = QModelIndex()*/)
{
    if ((count < 1) || (row < 0) || (row > list.size()))
        return false;
 
    beginInsertRows(QModelIndex(), row, row + count - 1);
    list.resize(list.size() + count);
    endInsertRows();
    return true;
}
 
а метод append() изменить на:
C++ (Qt)
void mymodel::append(QString id, QString text)
{
    if (insertRow(list.size()) {
        list.last.id = id;
        ist.last.text = text;
    }
}