QPixmap :: fromImage()在QX11PixmapData中给出了分段错误

时间:2011-04-01 17:08:48

标签: c++ qt qt4 lookup-tables qimage

我写了一些看起来或多或少像这样的代码:

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 个答案:

答案 0 :(得分:3)

您调用的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);

因为对于索引颜色图像,扫描线字节与宽度相同。