-Selim Phil Thompson wrote:
On Thu, 19 May 2011 14:42:47 -0700, Selim Tuvi <selim.t...@pdi.dreamworks.com> wrote:The code below outputs:[<__main__.Edge object at 0x2aaab0395830>, <PyQt4.QtGui.QGraphicsItem object at 0x2aaab03958c0>]which lists the Node instance as having the class QGraphicsItem when it should say <__main__.Node object at ...>.Tested on (Qt 4.7.2, PyQt 4.8.3) and (Qt 4.6.1, PyQt 4.7.2) Thanks -Selim from PyQt4 import QtGui, QtCore class Node(QtGui.QGraphicsObject): def __init__(self): QtGui.QGraphicsObject.__init__(self)def paint(self, painter, option, widget):passdef boundingRect(self):return QtCore.QRectF() class Edge(QtGui.QGraphicsItem): def __init__(self): QtGui.QGraphicsItem.__init__(self) def paint(self, painter, option, widget): pass def boundingRect(self): return QtCore.QRectF() if __name__ == '__main__': import sys app = QtGui.QApplication(sys.argv) print QtCore.QT_VERSION_STR, QtCore.PYQT_VERSION_STR view = QtGui.QGraphicsView() scene = QtGui.QGraphicsScene() view.setScene(scene) scene.addItem(Node()) scene.addItem(Edge()) print scene.items() view.show() sys.exit(app.exec_())It's because QGraphicsObject inherits both QObject and QGraphicsItem. items() returns a list of QGraphicsItems which, for a QGraphicsObject, has a different C++ address than the original QGraphicsObject. PyQt doesn't recognise that the QGraphicsItem is a cast of the QGraphicsObject. I don't think there is anything I can (sensibly) do about this. Phil
<<attachment: Selim_Tuvi.vcf>>
_______________________________________________ PyQt mailing list PyQt@riverbankcomputing.com http://www.riverbankcomputing.com/mailman/listinfo/pyqt