On Thursday 27 December 2007, Andreas Pakulat wrote: > On 27.12.07 15:27:20, Noam Raphael wrote: > > 2007/12/26, Andreas Pakulat <[EMAIL PROTECTED]>: > > > Then you need to provide a minimal self-contained example that > > > demonstrates the problem. > > > > No problem at all: > > > > http://python.pastebin.com/f1ac4e258 > > > > It creates a table which does nothing when you resize a column... > > Hmm, it works as soon as you put the method into a subclass of > QTableView. So either this is not supported by PyQt4, or there's a bug.
It's a SIP bug. In effect the "connection" is associated with the Python wrapper of the emitter, rather than the emitter itself. When the wrapper is garbage collected the connection is lost. The workaround is to keep a reference to object returned by horizontalHeader(). The fix will be in tonight's SIP snapshot. > If Phil doesn't come back to this thread until sometime in early january > I suggest to send a new mail with the above example and this code which > works fine: > > ,----[ testtab.py ]- > > | #!/usr/bin/env python > | > | import sys > | from PyQt4 import QtCore, QtGui > | from PyQt4.QtCore import Qt > | > | > | > | class MyWidget(QtGui.QTableView): > | def __init__(self): > | QtGui.QTableView.__init__(self, None) > | self.connect(self.horizontalHeader(), > | QtCore.SIGNAL("sectionResized(int,int,int)"), self.columnResized) def > | columnResized(*args): > | print args > | > | > | def main(): > | app = QtGui.QApplication(sys.argv) > | > | model = QtGui.QStandardItemModel(3,3) > | tableView = MyWidget() > | tableView.setModel(model) > | tableView.show() > | sys.exit(app.exec_()) > | > | if __name__ == '__main__': > | main() > > `---- Given this explanation I think it's just luck (ie. when the cyclic garbage collector happens to be invoked) that the above seems to work. Phil _______________________________________________ PyQt mailing list PyQt@riverbankcomputing.com http://www.riverbankcomputing.com/mailman/listinfo/pyqt