Ваш код абсолютно правильный. Единственное, что мне кажется подозрительным, это:
QString unicodeString = "Some Unicode string";
Вы понимаете, что вы не можете просто поместить строку Unicode в кавычки, не так ли? По умолчанию QString использует Latin1, поэтому, если речь идет только об акцентированных символах, у вас, вероятно, все в порядке, но лучше, чтобы ваш исходный кодировался в UTF-8 и делал это:
QString unicodeString = QString::fromUtf8("Some Unicode string");
Это будет работать для любого мыслимого языка. Использование QObject :: trUtf8 () еще лучше, поскольку оно дает вам много возможностей i18n.
Редактировать
Хотя это правда, что вы генерируете правильный файл UTF-8, если вы хотите, чтобы Notepad распознал ваш файл как UTF-8, это другая история. Вам нужно поставить спецификацию там. Это можно сделать либо как предложено в другом ответе, либо здесь другим способом:
streamFileOut.setGenerateByteOrderMark(true);