QPixmap :: fromImage () выдает ошибку сегментации в QX11PixmapData - PullRequest
0 голосов
/ 01 апреля 2011

Я написал код, который выглядит примерно так:

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 Bug?

Я использую CentOS 5.5, если это имеет значение.

Спасибо!

1 Ответ

3 голосов
/ 01 апреля 2011

Вы вызвали конструктор 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);

Поскольку для индексного цветного изображения байты строки развертки совпадают с шириной.

...