Hi everyone,
I'm having a problem that I hope someone can provide an answer.
I'm subclassing QTable, and I install an event filter in its vertical QHeader instance. When I catch a mouse double click event inside the event filter, destined to the header, any calls inside the event filter to the QTable's method verticalHeader() returns an instance of QObject, instead of QHeader.
Attached is a simple example (40 lines) that demonstrates the problem. Note that calling verticalHeader() in __init__() returns a QHeader object as expected, but when called from inside the eventFilter() method it returns a QObject instance.
I tried to force the QObject returned from verticalHeader() to become a QHeader by using calls to sip.unwrapinstance/sip.wrapinstance (as shown in the code), but without success.
Anyone has any idea of what the problem may be? Any workarounds?
Best Regards,
-- Bruno da Silva de Oliveira [EMAIL PROTECTED] ESSS - Engineering Simulation and Scientific Software http://www.esss.com.br
from qt import * from qttable import QTable, QTableSelection import sip
#================================================================================
# MyTable
#================================================================================
class MyTable(QTable):
def __init__(self, *args):
QTable.__init__(self, *args)
self.setColumnMovingEnabled(True)
self.setRowMovingEnabled(True)
self.verticalHeader().installEventFilter(self)
self.horizontalHeader().installEventFilter(self)
header = self.verticalHeader()
print 'OnInit:', header, self
def eventFilter(self, obj, event):
if obj is self.verticalHeader():
if event.type() == QEvent.MouseButtonDblClick:
header = self.verticalHeader()
print 'OnEventFilter:', header, self
x = sip.unwrapinstance(header)
o = sip.wrapinstance(x, QHeader)
print 'sip.wrapinstance:', o
return QTable.eventFilter(self, obj, event)
if __name__ == '__main__':
app = QApplication([])
win = MyTable(3, 3)
win.show()
app.setMainWidget(win)
app.exec_loop()
_______________________________________________ PyKDE mailing list [email protected] http://mats.imk.fraunhofer.de/mailman/listinfo/pykde
