我正在尝试在 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)。
最佳答案
尝试使用 QImage 而不是 QPixmap。
关于windows - QPainter::drawPixmap 在 Windows 和 Linux 上表现不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5248253/