Если читать внимательно
http://doc.trolltech.com/4.7/qdatastream.html, то выяснится, что "A data stream is a binary stream of encoded information which is 100% independent of the host computer's operating system, CPU or byte order". Т.е. теоретически, там может сколько угодно байт в каком-угодно месте быть забито чем угодно. Если нужно записать ровно, то ожидается позже увидеть в файле, то стоит прочесть там же раздел "Reading and writing raw binary data". Т.е. вместо append пользоваться readRawData()/writeRawData().