<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
On 01.07.2010 12:29, Phil Thompson wrote:
<blockquote cite="mid:ef8970bb83924866a35159bace39623f@localhost"
 type="cite">
  <pre wrap="">On Thu, 01 Jul 2010 11:58:01 +0200, "Christopher M. Nahler"
<a class="moz-txt-link-rfc2396E" href="mailto:christopher.nahler@papermodels.at">&lt;christopher.nahler@papermodels.at&gt;</a> wrote:
  </pre>
  <blockquote type="cite">
    <pre wrap="">I want to add signalling functionality to scene items. In my case they 
are usually QGraphicsRectItems..

I thought I could do this with deriving from QGraphicsObject but then I 
loose all the funtionality for the rectangle, handling pens and brushes, 
shapes etc.

Isn't it easier to just derive from QGraphicsRectItem and QObject? Or 
should I derive from QGraphicsRectItem and QGraphicsObject instead?
    </pre>
  </blockquote>
  <pre wrap="">
Neither. You can't multiply inherit from more than one PyQt class.

  </pre>
  <blockquote type="cite">
    <pre wrap="">Or are there any other ways to do this?
    </pre>
  </blockquote>
  <pre wrap="">
Create a QObject subclass that implements your signals as an attribute of
your QGraphicsRectItem.

Phil
  </pre>
</blockquote>
<font face="Courier New, Courier, monospace" size="-1"><br>
Thanks for the quick reply. I have tried to implement it that way but
stumbled over another problem I have in this case. I want to announce
that a MyRectangle was created (or has changed). When I want to add a
signalling object to my rectangle class I have to def it before. But
when I define the signal there I have to specify the data type which is
not yet defined.<br>
<br>
<br>
#!/usr/bin/env python<br>
# -*- coding: utf-8 -*-<br>
<br>
from PyQt4.QtCore import *<br>
from PyQt4.QtGui import *<br>
<br>
class Communicator(QObject):<br>
    MyRectangleCreated = pyqtSignal(MyRectangle) &lt;-- MyRectangle not
defined yet!<br>
    <br>
    def __init(self):<br>
        super(Communicator, self).__init__(parent)<br>
    <br>
    <br>
class MyRectangle(QGraphicsRectItem):<br>
    <br>
    def __init__(self, rect=QRectF(0, 0, 0, 0), parent=None,
scene=None):<br>
        super(MyRectangle, self).__init__(parent, scene)<br>
        self.myCommunicator = Communicator()<br>
        self.myCommunicator.MyRectangleCreated.emit(self)<br>
        <br>
if __name__ == "__main__":<br>
    r = MyRectangle()</font><br>
<br>
In genereal what I want to do is synchronize the QGraphicsItems from
the scene with a list of data objects. So when I create a graphics item
a data object in the data manager should be created and when I change a
graphics object the corresponding data block object should be updated.<br>
<br>
BTW right now I have the handling of the events (which creates and
changes graphics items) in a widget derived from a view.<br>
<br>
Any hints on the best approach for that?<br>
<br>
Thanks<br>
Chris<br>
</body>
</html>