<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
  <title></title>
</head>
<body bgcolor="#ffffff" text="#000000">
Thanks for your quick reply. I thought that it was possible to have
multiple inheritance in Python.<br>
<br>
My original problem was to have a checkbox item in a table cell which
could emit a signal when clicked. What I've done is to make a QObject
data member as part of my CheckBoxItem class. Is this the only way to
get this class to emit a signal when clicked?<br>
<br>
My class looks as follows:<br>
class CheckBoxTableItem(QTableItem):<br>
&nbsp;&nbsp;&nbsp; def __init__(self, parent, table, text):<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; QTableItem.__init__(self, table, QTableItem.Always, text)<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; self.emitter = QObject(parent)<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; self.checkbox = None<br>
<br>
&nbsp;&nbsp;&nbsp; def setContentFromEditor(self, w):<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; print 'CheckBoxTableItem::setContentFromEditor ' #DFD<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if self.checkbox:<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; self.setText(self.checkbox.text())<br>
<br>
&nbsp;&nbsp;&nbsp; def createEditor(self):<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; print 'CheckBoxTableItem::createEditor ' #DFD<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; self.checkbox = QCheckBox(self.table().viewport())<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; self.checkbox.connect(self.checkbox, SIGNAL("clicked()"),
self.__Clicked)<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; self.checkbox.setText(self.text())<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; self.checkbox.show()<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return self.checkbox<br>
<br>
&nbsp;&nbsp;&nbsp; def __Clicked(self):<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; self.emitter.emit(PYSIGNAL("Clicked()"), ())<br>
<br>
It's created as follows:<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; checkItem = CheckBoxTableItem(self, self.testStatusTable,
"Start")<br>
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; self.connect(checkItem.emitter, PYSIGNAL("Clicked()"),
self.__CheckItemClicked)<br>
<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; self.testStatusTable.setItem(row, 0, checkItem)<br>
<br>
Cheers<br>
<br>
Daryl<br>
<br>
<br>
<br>
Phil Thompson wrote:
<blockquote cite="mid200604260935.57088.phil@riverbankcomputing.co.uk"
 type="cite">
  <pre wrap="">On Wednesday 26 April 2006 7:44 am, Daryl Dusheiko wrote:
  </pre>
  <blockquote type="cite">
    <pre wrap="">Hi,

I would like to add a CheckBox to a cell in a QTable that sends a signal
when the check box is clicked. The existing QCheckTableItem does not
emit any signals.

I've specialised the class from both the QTableItem and QObject classes.
When I create the new class and add the item to the table I get the
following error:

   File "/home/daryld/BurninTest/BurninTestDialog.py", line 29, in __init__
29, in __init__
    QTableItem.__init__(self, table, edittype, text)
 TypeError: argument 2 of QObject() has an invalid type


My class looks as follows:
class CheckBoxTableItem(QObject, QTableItem):
    def __init__(self, table, edittype, text):
        QObject.__init__(self)
        QTableItem.__init__(self, table, edittype, text)  # !!! THIS IS
LINE 29 !!!
        self.checkbox = None

    def setContentFromEditor(self, w):
        if self.checkbox:
            self.setText(self.checkbox.text())

    def createEditor(self):
        self.checkbox = QCheckBox(self.table().viewport())
        self.checkbox.connect(self.checkbox, SIGNAL("clicked()"),
self.__Clicked)
        self.checkbox.setText(self.text())
        self.checkbox.show()
        return self.checkbox

    def __Clicked(self):
        self.emit(PYSIGNAL("Clicked()"), ())


The code where the object is created and is added to the table looks as
follows:
        checkItem = CheckBoxTableItem(self.testStatusTable,
QTableItem.Always, "Start")
        self.connect(checkItem, SIGNAL("clicked()"),
self.__CheckItemClicked)

        self.testStatusTable.setItem(row, 0, checkItem)

Please could someone help me get rid of this error or suggest another
way to get a signal when I click a check box in a table cell.
    </pre>
  </blockquote>
  <pre wrap=""><!---->
You can't inherit from more than one wrapped class at a time.

Phil

______________________________________________________________________
This email has been scanned by the MessageLabs Email Security System.
For more information please visit <a class="moz-txt-link-freetext" href="http://www.messagelabs.com/email">http://www.messagelabs.com/email</a> 
______________________________________________________________________
  </pre>
</blockquote>
</body>
</html>