QPaint::drawPixmap在Windows和Linux上的行为不同
我试图在QWidget中绘制一个透明的PNG文件。问题是,我在Windows和Linux上得到了不同的结果 我上传了,还有。差别显而易见 我用于测试的代码是-QPaint::drawPixmap在Windows和Linux上的行为不同,windows,linux,qt,png,transparent,Windows,Linux,Qt,Png,Transparent,我试图在QWidget中绘制一个透明的PNG文件。问题是,我在Windows和Linux上得到了不同的结果 我上传了,还有。差别显而易见 我用于测试的代码是- class TestWidget: public QWidget { public: TestWidget(const char* imagePath) { m_pixmap = QPixmap(imagePath); setStyleSheet("background-color: bla
class TestWidget: public QWidget {
public:
TestWidget(const char* imagePath)
{
m_pixmap = QPixmap(imagePath);
setStyleSheet("background-color: black");
}
protected:
virtual void paintEvent(QPaintEvent *)
{
QPainter painter(this);
painter.drawPixmap(QPoint(0,0), m_pixmap);
}
QPixmap m_pixmap;
};
主要功能如下所示:
TestWidget* testWidget = new TestWidget(imagePath);
testWidget->setGeometry(0, 10, 1024, 1024);
testWidget->show();
我正在使用Qt4.5.1/4.7.2、WindowsXP和CentOS5.5
你知道有什么问题吗
编辑:
为了详细说明选定的答案,我必须使用24位格式的QImage(QImage::format_ARGB8565_预乘)。看起来Linux桌面的颜色比Windows桌面少。 您是否已在CentOS桌面上检查颜色设置? 也许您可以尝试使用普通渐变,看看它的外观:
class TestWidget: public QWidget {
public:
TestWidget(const char* imagePath)
{
setStyleSheet("background-color: qlineargradient(x1: 0, y1: 0, x2: 1, y2: 0, stop: 0 #000000, stop: 1 #FFFFFF);");
}
};
结果应该是从左到右平滑的水平渐变。尝试使用QImage而不是QPixmap。Linux桌面的颜色深度是否足够?