Нужно определить кодировку файла
QByteArray filedata = file.readAll();
QTextCodec::ConverterState state;
QTextCodec* codec = QTextCodec::codecForName(fileFormat.toLatin1()); // fileFormat = "UTF-8", "CP-1251"...
if(!codec) continue;
const QString text = codec->toUnicode(filedata.constData(), filedata.size(), &state);
if (state.invalidChars == 0) return text; }
}
Для файлов с UTF-8 прокатывает, а для cp1251 state.invalidChars == количеству русских символов, хотя считал строку правильно.