Ну посмотрите:
CString(ibm866) -> [win1251 codec] -> QString(utf16 already corrupted) -> [ibm 866] -> QCString -> [cstring codec] -> QString
В общем этот кусок кода должен выглядеть примерно так:
C++ (Qt)
QFile file(s);
if ( file.open( IO_ReadOnly ) ) {
    QTextStream stream( &file );
    stream.setCodec(QTextCodec::codeForName("IBM866"));
    while ( !stream.atEnd() ) {
        const QString line = stream.readLine(); 
        QMessageBox::information( this,"",locallyEncoded);
    }
    file.close();
}