Cómo generar esta imagen de 24 bits en Qt

Tengo una matriz de caracteres sin firmar que se define así:

unsigned char **chars = new unsigned char *[H];
for(int i = 0; i < H; i++)
{

    chars[i] = new unsigned char[W*3];
}

Donde H es la altura de la imagen, y W es el ancho, y los caracteres se rellenan en el resto de esa función en bucle sobre filas x columnas de la imagen de entrada. Los caracteres se completan en el orden Rojo Verde Azul

Estoy tratando de leerlo con algo como esto:

QImage *qi = new QImage(imwidth, imheight, QImage::Format_RGB888);
    for (int i = 0 ; i < imheight ; i++)
        for (int j = 0 ; j < imwidth ; j++)
        {      //not sure why, but have to flip j and i in the index for setPixel
               qi->setPixel(j,i,qRgb(imageData[i][j],imageData[i][j+1],imageData[i][j+2]));
               j+=3;

           }

   QPixmap p(QPixmap::fromImage(*qi,Qt::AutoColor));
   QPixmap p1(p.scaled(ui->menuBar->width(),ui->menuBar->width(), Qt::KeepAspectRatio, Qt::SmoothTransformation ));
   ui->viewLabel->setPixmap(p1);
   ui->viewLabel->setFixedHeight(p1.height());
   ui->viewLabel->setFixedWidth(p1.width());

donde los caracteres se devolvieron a esta función de llamada en la matriz imageData.

¿Qué estoy haciendo mal? ¿Debo usar un formato diferente, a pesar de que estoy asignando claramente 3 caracteres sin signo por píxel (por eso elegí el formato RGB888). Este código publicado devuelve una imagen, pero se muestra incorrectamente: parcialmente codificado, deslavado, etc.

Gracias

Respuestas a la pregunta(1)

Su respuesta a la pregunta