Мне удалось отобразить изображение в метке в Qt, используя что-то вроде следующего:
transformPixels(0,0,1,imheight,imwidth,1);//sets unsigned char** imageData
unsigned char* fullCharArray = new unsigned char[imheight * imwidth];
for (int i = 0 ; i < imheight ; i++)
for (int j = 0 ; j < imwidth ; j++)
fullCharArray[(i*imwidth)+j] = imageData[i][j];
QImage *qi = new QImage(fullCharArray, imwidth, imheight, QImage::Format_RGB32);
ui->viewLabel->setPixmap(QPixmap::fromImage(*qi,Qt::AutoColor));
Так что fullCharArray - это массив неподписанных символов, которые были отображены из 2D-массива imageData, вДругими словами, это imheight * imwidth байтов.
Проблема в том, что кажется, что только часть моего изображения отображается на этикетке.Изображение очень большое.Я хотел бы отобразить полное изображение, уменьшенное, чтобы уместить его на этикетке, с сохранением соотношения сторон.
Кроме того, этот формат QImage был единственным, который я смог найти, который, казалось, давал мне точное представление оизображение, которое я хочу показать, это то, что я должен ожидать?Я использую только один байт на пиксель (беззнаковые значения - значения от 0 до 255), и похоже, что RGB32 не имеет особого смысла для этого типа данных, но ни один из других не отображал ничего удаленно правильного
editСледуя совету Дэна Галлагерса, я реализовал этот код:
QImage *qi = new QImage(fullCharArray, imwidth, imheight, QImage::Format_RGB32);
int labelWidth = ui->viewLabel->width();
int labelHeight = ui->viewLabel->height();
QImage small = qi->scaled(labelWidth, labelHeight,Qt::KeepAspectRatio);
ui->viewLabel->setPixmap(QPixmap::fromImage(small,Qt::AutoColor));
Но из-за этого моя программа неожиданно завершает работу с кодом 0