[PyQt] segmentation fault

Phil Thompson phil at riverbankcomputing.co.uk
Sat Oct 20 10:21:11 BST 2007


On Saturday 20 October 2007, David Boddie wrote:
> On Friday 19 October 2007 08:12:54 +0200, lucaberto wrote:
> > > > ? ? def file_information(self):
> > > > ? ? ? ? val = self.treeWidget.currentItem()
> > > > ? ? ? ? indice = self.treeWidget.indexFromItem(val, 0)
> > > >
> > > > in this instruction :
> > > >
> > > > indice = self.treeWidget.indexFromItem(val, 0)
> > >
> > > Can you tell us what "val" contains? Is it "None"?
> >
> > The value of val is:<PyQt4.QtGui.QTreeWidgetItem object at
> > 0x2abf1e34ee20>
>
> That's strange, but I think I can see what the problem is.
>
> Looking back at your previous message, you write this:
>
>   class Form(QWidget, Ui_Form):
>       """
>       Class documentation goes here.
>       """
>       def __init__(self, parent = None):
>           """
>           Constructor
>           """
>           QWidget.__init__(self, parent)
>           self.setupUi(self)
>           self.modello = QtGui.QDirModel()
>           self.treeWidget.setModel(self.modello)
>
> Is self.treeWidget an instance of QTreeWidget? I'm assuming it is because
> you later write
>
>       def file_information(self):
>           val = self.treeWidget.currentItem()
>           indice = self.treeWidget.indexFromItem(val, 0)
>
> The problem is that you set a new model on a QTreeWidget instance, and it's
> not designed to be used that way. QTreeWidget provides a nice, convenient,
> item-based class that can be used to create trees of items. Internally, it
> has its own model, and it's a subclass of QTreeView so it provides the
> setModel() method, but you're not really supposed to give it a new model
> to work with - it just doesn't expect it.
>
> You should really use QTreeView with QDirModel, though I appreciate that
> you may miss the item-based API that QTreeWidget provides.
>
> David

The current PyQt snapshot has a bug fix which means that setting a model on a 
QTreeWidget will now raise an exception.

Phil


More information about the PyQt mailing list