我写了一些看起来或多或少像这样的代码:
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。
谢谢!
答案 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);
因为对于索引颜色图像,扫描线字节与宽度相同。