On 19.07.07 09:14:20, Tom Brown wrote: > 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."
Hmm, my Qt4.3 docs only say it should be emitted, not that it has to be emitted. Anyway, basically you're right and I was wrong (looks like my last model impl. is quite some time ago) > > 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? Not without some example code. Up-to-date PyQt snapshots contain a python port of the ModelTest from Qt Labs, it can be used to test wether your model conforms to the assumptions that views make about it. Andreas -- You have a deep interest in all that is artistic. _______________________________________________ PyQt mailing list [email protected] http://www.riverbankcomputing.com/mailman/listinfo/pyqt
