Используй 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;
}
}