la firma de la función prepend:
Código C++:
Ver originalQString & QString::prepend ( const QString & str )
Es decir, prepend modifica el string actual y devuelve una referencia de la instancia actual.
Con tu código original:
Código C++:
Ver originaldatos.value(0).value(i)=datos.value(0).value(i).prepend(LeyendasCabecera[i]);
Si lo simplificamos un poco:
Código C++:
Ver originalstr=str.prepend(LeyendasCabecera[i]);
Resulta que estás haciendo esto:
Código C++:
Ver originalstr.prepend(LeyendasCabecera[i]);
str = str;
Y esa última asignación no es algo especialmente recomendable en C++.
Dicho esto, tal y como dicta la firma que te he puesto al inicio de la función, es posible que tu código funcione simplemente con esto:
Código C++:
Ver originaldatos.value(0).value(i).prepend(LeyendasCabecera[i]);
Si no funciona es porque value(0) o value(i) está devolviendo un string por valor en vez de por referencia. No puedo decir más porque ignoro la estructura de "datos".
Un saludo.