ich habe ein ziemlich großes QGraphicsView (bis zu ca. 100.000 Items), welches ich asynchron updaten möchte. Ereignisse, bei denen das Update auftreten soll, sind z.B. Mouse-Events u.ä. (Cursor verschieben).
Also gibt es bei mir einen eigenen QThread, der u.a. folgendes macht:
Code: Alles auswählen
for item in my_items:
item.setBrush(QtGui.Brush(QtGui.QColor(...)))
scene.update()
Ich vermute, dass das daran liegt, dass man die Objekte immer nur in ihrem "eigenen" Thread behandeln darf.
Also zu Beginn noch ein "scene.moveToThread(...)" eingebaut.
Das hilft aber nicht. Die einzelnen Items (QGraphicsRectItem) sind jedoch nicht von QObject abgeleitet (warum eigentlich nicht?), sodass ich dort moveToThread() nicht aufrufen kann.
Wie kann ich nun ein asynchrones Update der Map hinbekommen? Ich möchte es nicht im Haupt-Gui-Thread machen, da dann für die Zeit des Updates (einige Sekunden) die Oberfläche blockiert ist, was gerade bei der Verschiebung eines Mauscursors (welches das Update hervorruft) sehr störend wirken würde.
Viele Grüße
olebole