If you look at the documentation for QStringhere you can see that QString::at is declared as:
const QChar QString::at ( int position ) const
As you can see, the at member returns a QChar by value, which means you can use this method to see the value of a a character, but not to set the value. This is in contrast to the behaviour of the at member of std::string , which returns by reference and is overloaded with const and non-const versions. See here and compare with the QString version.