[PyQt] QAbstractItemModel.setData() and emit

Tom Brown brown at esteem.com
Thu Jul 19 17:14:20 BST 2007


On Wednesday 18 July 2007 15:40, Andreas Pakulat wrote:
> On 18.07.07 14:58:11, Tom Brown wrote:
> > Hi,
> >
> > I am using PyQt4 with Qt 4.2.3. I have subclassed QAbstractItemModel to
> > create a custom model for a custom combobox. I have overridden the
> > setData() method and keep getting this error:
> >
> > TypeError: invalid result type from ECBModel.setData()
> >
> > When I remove the call to emit(), the error goes away. Here is my
> > setData() method:
>
> You don't need to emit dataChanged in setData, you only need to emit
> that signal if you change data in custom methods.
The documentation says you need to emit dataChanged() if you reimplement the 
setData() method.

"Note that the dataChanged() signal must be emitted explicitly when 
reimplementing this function."

> Also note: setData shouldn't alter the number of rows or columns in the
> model, it should only change the data of an existing "cell". If you want
> to add a row/column you should use insertRows/Columns (and eventually
> re-implement them).

Well, I reimplemented a few required methods like index() and parent(). The 
error stopped showing up. However, the combobox never shows a value even 
though there are items in the list. Any ideas on that?

Thanks,
Tom


More information about the PyQt mailing list