[PyQt] auto-completing combo box with table view

Andreas Pakulat apaku at gmx.de
Wed Nov 28 12:02:21 GMT 2007


On 28.11.07 22:16:09, Horst Herb wrote:
> On Wednesday 28 November 2007, Andreas Pakulat wrote:
> > That model provides data, no matter wether the index is valid or not or
> > the role matches Qt.DisplayRole. That means you break the contract
> > between model and view.
> 
> It is just a dummy to deliver some data to test the widget - should do that 
> trick

Not necessarily, especially the role-thing might confuse the view.

> > > class MyCompleter(QCompleter):
> > >     def __init__(self, parent=None):
> > >         super(MyCompleter, self).__init__(parent)
> > >         model = MyCompletionModel()
> >
> > Thats another bad idea, you don't keep a reference to the model so it
> > will disappear as soon as __init__ is done.
> 
> Really:
> model = MyCompletionModel()
> self.setModel(model)
>
> I would have thought that if I pass the model to the completer via setModel, 
> it keep the reference alive

AFAIK thats not possible, due to the interaction between C++ and Python
here, i.e. what is kept is the C++ part of your model, but the python
part goes into nirvana. (I hope Phil doesn't kill me for that
explanation). Check the PyQt examples, they do keep a reference to the
model too (simpledommodel.py for example)

Andreas

-- 
Lady Luck brings added income today.  Lady friend takes it away tonight.


More information about the PyQt mailing list