Ich versuche in PyQt mit dem Graphics View Framework auf einem Raster zu zeichnen. Ich mein damit die Möglichkeit, Elemente nicht pixelgenau zu verschieben, sondern z. B. in 10px-Sprüngen.
Ich hatte bisher folgende Umsetzung:
Code: Alles auswählen
def mouseMoveEvent(self, event):
#save current (rasterized) mouse position // x
if (int(str(event.x())[-1]) < 5):
self.mPos[0] = (event.x() / 10) *10
else:
self.mPos[0] = (event.x() / 10 + 1) *10
#y
if (int(str(event.y())[-1]) < 5):
self.mPos[1] = (event.y() / 10) *10
else:
self.mPos[1] = (event.y() / 10 + 1) *10
Dann wird das Element, in dem Fall eine QLine, auf diese Position geupdatet.
Das Problem bei dieser Methode ist, dass wenn die Position aufgerundet wird, die Linie nicht vollständig aktualisiert wird, also nicht 10px länger wird, sondern nur ca. 1px. Erst wenn ich eine neue Linie zeichne, wird die Linie aktualisiert richtig gezeichnet.
Es gibt also zwei Möglichkeiten mir zu helfen

Für beides bin ich dankbar,
Qdeep