[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