PyQt QCompleter model

nusch nuschpl at gmail.com
Thu Sep 17 07:00:50 EDT 2009


On Sep 17, 2:40 am, David Boddie <da... at boddie.org.uk> wrote:
> On Thursday 17 September 2009 01:14, nusch wrote:
>
> > The following code:
>
> > strings=["asdad", "baasd", "casd", "caxd"]
> > completer = QCompleter(strings)
> > model = completer.model()
> > print model.rowCount()
> > model.stringList().append("test")
>
> This may not work as you expect. Although it may actually modify the list,
> the model won't know about the change.
>
> > print model.rowCount()
>
> > prints 4 before and after appending test to stringList. What should I
> > do to let the model know about new data? I can save reference to
> > model.stringList() append keyword and after pass this reference as an
> > argument to setStringList then last model.rowCount() increases, but it
> > is not efficient when operating with e.g 20000 words in such list.
>
> Ideally, you would call setStringList(), but I can see why that isn't a
> good solution for you.
>
> > Is there better way to do this? Or  is there any other method with
> > simply allow to add word to Qcompleter without using .stringList() >
>
> Use the model API to append new rows and set new data. Something like
> this should get you started:
>
>   rows = model.rowCount()
>   if model.insertRow(rows):
>     index = model.index(rows)
>     model.setData(index, QVariant("test"))
>
> David

Thanks :)



More information about the Python-list mailing list