Странно, что QDataStream добавляет какие-то данные для QByteArray, для чего размер массива в начале?
Что бы потом его можно было корректно прочесть из потока.
Представь ситуацию, нужно записать несколько массивов, как при чтении различать когда закончился один и начался второй ByteArray.