QPixmap::fromImage() дава грешка при сегментиране в QX11PixmapData

Написах някакъв код, който изглежда горе-долу така:

QVector<QRgb> colorTable(256);
 QImage *qi = new QImage(lutData, imwidth,imheight, QImage::Format_Indexed8);

 while (index < 256)
 {
         colorTable.replace(index, qRgb(2552,255, 255));
         index++;
 }
 qi->setColorTable(colorTable);


 QPixmap p(QPixmap::fromImage(*qi,Qt::AutoColor));

така че lutData (unsigned char) е моите индекси в colorTable. Това се срива на последния ред на фрагмента и действителният ред е в библиотека, за която не мога да видя източника, наречена QX11PixmapData. Какво правя погрешно, за да предизвикам този срив, или това е грешка в Qt?

Работя с CentOS 5.5, ако това има значение.

Благодаря!


person Derek    schedule 01.04.2011    source източник


Отговори (1)


Конструкторът QImage, който извикахте, е:

QImage::QImage ( const uchar * data, int width, int height, Format format )

Което изисква сканираните данни да са 32-битови. Така че се уверете, че е така и също така има достатъчно байтове в него. Или можете да използвате:

QImage::QImage ( uchar * data, int width, int height, int bytesPerLine, Format format )

Което позволява спецификация на байтове на сканиращ ред, без да е 32-битово подравнено. Така че можете да го наречете по следния начин:

QImage *qi = new QImage(lutData, imwidth, imheight, imwidth, QImage::Format_Indexed8);

Тъй като за цветно индексно изображение байтовете на сканиращия ред са същите като ширината.

person Stephen Chu    schedule 01.04.2011
comment
Уау..страхотен съвет..това реши проблема! Никога не бих получил това! +1 - person Derek; 01.04.2011
comment
Уггх, това беше неприятен проблем за забелязване! Благодаря - person gpdaniels; 24.04.2014