1

QGraphicsItem を拡張して新しい種類のアイテムを定義するクラスを作成するにはどうすればよいですか?

私はそれをやろうとしています

#!/usr/bin/python

import sys
from PyQt4 import QtGui

class Node(QtGui.QGraphicsItem):
    def __init__(self, parent = 0):
        self.setFlag(QtGui.QGraphicsItem.ItemIsMovable)


app = QtGui.QApplication(sys.argv)

scene = QtGui.QGraphicsScene()
scene.addText("test")

scene.addItem(Node())

view = QtGui.QGraphicsView(scene)
view.show()

sys.exit(app.exec_())

しかし、私はこのエラーが発生します

Traceback (most recent call last):
  File "primo.py", line 15, in <module>
    scene.addItem(Node())
  File "primo.py", line 8, in __init__
    self.setFlag(QtGui.QGraphicsItem.ItemIsMovable)
RuntimeError: underlying C/C++ object has been deleted    

私は何を間違っていますか?QGraphicsItemは抽象クラスであるため、Nodeのinitメソッド内で QGraphicsItem コンストラクターを呼び出すことはできません

4

2 に答える 2

6

解決策はこれです

#!/usr/bin/python

import sys
from PyQt4 import QtGui

class Node(QtGui.QGraphicsItem):
    def __init__(self, parent = None):
        QtGui.QGraphicsItem.__init__(self,parent)
        self.setFlag(QtGui.QGraphicsItem.ItemIsMovable)

app = QtGui.QApplication(sys.argv)

scene = QtGui.QGraphicsScene()
scene.addText("test")

scene.addItem(Node())

view = QtGui.QGraphicsView(scene)
view.show()

sys.exit(app.exec_())
于 2010-06-28T10:05:04.950 に答える