You say you are in a QThread. Probably calculating those images you want to be displayed. That is perfectly fine.
Now you will not be able to display them directly from that thread, whatever method you choose. The actual painting has to be done from the gui thread.
But you can quite easily create a descendant of QObject and QGraphicsItem that has a slot where you update a pixmap-member that you draw in the paintEvent. To prevent simultaneous painting and write-access protect the pixmap with a mutex. Lock it when updating and when painting.
Instead of manually protecting the pixmap you could also rely on Qt's queued connections, which will be the default connection type for objects living in different threads anyway! Then the update signal will be executed in the context of the gui-thread and you can set the pixmap of a QGraphicsPixmapItem directly. Keep in mind that the QThread object itself is not 'living' in the thread. But with the 'new' way of using QThreads, namely not subclassing QThread but moving a worker class to a QThread-instance, that should not be a problem.
Whenever your thread has a pixmap ready it just signals your item the update.
You add 4 of these items to your scene and set their positions with setPos.
HIH
Joh
Bookmarks