I would do it differently. I would have a QPixmapCache that was able to hold some amount of images. Then I would have my own class for representing items. Painting routine of the item class would grab the contents of the image from the cache instead of its own member variable. The cache would be responsible for getting rid of least recently used items. If a required item was missing in the cache, it could then be loaded back from disk. This way everything would work on its own without the need of deleting and creating items all the time.