我正在尝试在QWidget中绘制透明的PNG文件。问题是,我在Windows和Linux上得到了不同的结果。
我上传了the image,Windows screenshot和Linux screenshot。可以很容易地看出差异。
我用于测试的代码是 -
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();
我正在使用Qt 4.5.1 / 4.7.2,Windows XP和CentOS 5.5。
任何想法可能是什么问题?
为了详细说明所选答案,我不得不使用24位格式的QImage(QImage :: Format_ARGB8565_Premultiplied)。
答案 0 :(得分:1)
看起来您的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);");
}
};
结果应该是从左到右的平滑水平渐变。
答案 1 :(得分:1)
尝试使用QImage而不是QPixmap。