Yes, the connect signal had the wrong signature, but that doesn't matter. I do not get a warning when trying to connect invalid signals, but even if I have no activated-signal connected, the darn thing still segfaults when I double click any cell.
On 2010-08-09 (Mon) 09:09, pe...@lohmanders.se wrote: > Hello! > > No matter how I implement my own item models, they segfault when ever they > are used with a view and an item is activated. > > Example minimalistic model I test with: > > import sys > from PyQt4 import QtGui, QtCore > > class TestModel(QtCore.QAbstractTableModel): > > def headerData(self, section, orientation, role = > QtCore.Qt.DisplayRole): > return QtCore.QVariant("a") > > def data(self, index, role = QtCore.Qt.DisplayRole): > if role == QtCore.Qt.DisplayRole: > return QtCore.QVariant("t") > return QtCore.QVariant() > > def columnCount(self, index): > return 2 > > def rowCount(self, index): > return 2 > > > def onActivated(): > print "activated" > > if __name__ == "__main__": > app = QtGui.QApplication([]) > win = QtGui.QMainWindow() > model = TestModel() > view = QtGui.QTreeView() > view.setModel(model) > app.connect(view, QtCore.SIGNAL("activated("")"), > onActivated) > view.setRootIsDecorated(False) > win.setCentralWidget(view) > win.show() > app.exec_() > > > > To reproduce the segfault I set the model for a table or tree view and just > double click one of the 4 empty cells. If the item is editable the editor > appears and nothing happens. If the item is not editable and is activated > there's a delay of 0.5-1.0 seconds before a segfault pops up. > > I get no warnings and no errors from PyQt or Python and I don't have the > debug versions available, but here's the bt from gdb anyway: > > #0 0x00007ffff7abab7f in PyDict_GetItem () from > /usr/lib/libpython2.6.so.1.0 > #1 0x00007ffff7aa9d10 in PyFrame_New () from /usr/lib/libpython2.6.so.1.0 > #2 0x00007ffff7b16c97 in PyEval_EvalCodeEx () from > /usr/lib/libpython2.6.so.1.0 > #3 0x00007ffff7aaa9cf in function_call () from /usr/lib/libpython2.6.so.1.0 > #4 0x00007ffff7a83893 in PyObject_Call () from /usr/lib/libpython2.6.so.1.0 > #5 0x00007ffff7a9644f in instancemethod_call () from > /usr/lib/libpython2.6.so.1.0 > #6 0x00007ffff7a83893 in PyObject_Call () from /usr/lib/libpython2.6.so.1.0 > #7 0x00007ffff7b0fb43 in PyEval_CallObjectWithKeywords () from > /usr/lib/libpython2.6.so.1.0 > #8 0x00007ffff425413b in ?? () from /usr/lib/python2.6/site-packages/sip.so > #9 0x00007ffff59bad94 in ?? () from > /usr/lib/python2.6/site-packages/PyQt4/QtCore.so > #10 0x00007ffff5a99460 in ?? () from > /usr/lib/python2.6/site-packages/PyQt4/QtCore.so > #11 0x00007ffff560a3bd in QAbstractTableModel::hasChildren(QModelIndex > const&) const () from /usr/lib/libQtCore.so.4 > #12 0x00007ffff336d977 in ?? () from /usr/lib/libQtGui.so.4 > > > Obviously, no matter how bad you write your models PyQt shouldn't segfault. > I use version 4.7.4-2 on a 64-bit Linux system (Archlinux), but it also > segfaults with 4.4.4-6 on a Debian system. > > This is a new problem, I have many models in other applications that work > fine, I have no idea why this is happening, any help is appreciated. > > /Peter > _______________________________________________ > PyQt mailing list PyQt@riverbankcomputing.com > http://www.riverbankcomputing.com/mailman/listinfo/pyqt _______________________________________________ PyQt mailing list PyQt@riverbankcomputing.com http://www.riverbankcomputing.com/mailman/listinfo/pyqt