Code: Select all
## working example
# imports
QML_IMPORT_NAME = "Instance2D"
QML_IMPORT_MAJOR_VERSION = 1
@QmlElement
class Instance2D(QQuickItem):
itemChanged = Signal(QObject, name="itemChanged")
def __init__(self, parent=None):
super().__init__(parent)
self.setFlag(QQuickItem.Flag.ItemHasContents, True) # to enable calls of updatePaintNode
def updatePaintNode(self, node: QSGNode, upd):
if node is None:
node = QSGSimpleRectNode()
node.setColor(Qt.GlobalColor.green)
node.setRect(QRectF(25, 25, 200, 500))
return node
## Not working example
...
def updatePaintNode(self, node: QSGNode, upd):
if node is None:
geometry = QSGGeometry(QSGGeometry.defaultAttributes_Point2D(), 3)
geometry.setDrawingMode(QSGGeometry.DrawingMode.DrawTriangles)
geometry.allocate(3) # Don't know if this is needed
material = QSGFlatColorMaterial()
material.setColor(QColor(100, 255, 0))
node = QSGGeometryNode()
node.setGeometry(geometry)
node.setMaterial(material)
node.setFlag(QSGNode.Flag.OwnsGeometry, True)
node.setFlag(QSGNode.Flag.OwnsMaterial, True)
vertices = geometry.vertexDataAsPoint2D()
vertices[0].set(50, 50)
vertices[1].set(100, 50)
vertices[2].set(75, 120)
# node.markDirty(QSGGeometryNode.DirtyStateBit.DirtyGeometry) # Did not help
return node
< /code>
Ich konnte kein Problem in meinem Code finden und es wird ohne Fehler ausgeführt (außer dem Speicherfehler manchmal). Alle anderen Skripte (QML, Python) habe ich nicht geändert. Typen.>