Details
-
Bug
-
Resolution: Done
-
P2: Important
-
5.4.0
-
Windows 7, Mac 10.9
-
5c2df051cdf8768424fe250bec99b67844df9a36
Description
QPixmap::loadFromData(data) overwrites current pixmap data but doesn't make copy of it even pixmap cacheKey is changed. If Pixmap is set to label before loading new data to pixmap it shows incorrectly next data is loaded to pixmap.
// Doesn't work correctly (Both labels show a green pixmap)
QPixmap pixmap;
pixmap.loadFromData(pixmapRed);
label1.setPixmap(pixmap);
pixmap.loadFromData(pixmapGreen);
label2.setPixmap(pixmap);
Workaround is to reset pixmap with empty bytearray before setting new data:
// Works correctly (Show green and red labels) QPixmap pixmap; pixmap.loadFromData(pixmapRed); label3.setPixmap(pixmap); pixmap.loadFromData(QByteArray()); // Reset before setting new data. pixmap.loadFromData(pixmapGreen); label4.setPixmap(pixmap);