[PyQt] connection to list view and combo pyqt
Peter Liedler
peter at liedler.at
Wed Jan 23 18:01:22 GMT 2008
Sorry, no sucess here. I don't get it.
Peter
On Mit, 2008-01-23 at 18:28 +0100, David Boddie wrote:
> On Wed Jan 23 17:08:15 GMT 2008, Peter Liedler wrote:
>
> > I am still fighting to get connected to a selectionChanged signal of a
> > listView.
>
> I think there's been some confusion about what actually emits the
> selectionChanged() signal. It's actually the list view's selection model:
>
> http://www.riverbankcomputing.com/Docs/PyQt4/html/qabstractitemview.html#selectionModel
>
> The signal is described here:
>
> http://www.riverbankcomputing.com/Docs/PyQt4/html/qitemselectionmodel.html#selectionChanged
>
> > If I understand the qt documentation, the QItemSelection is generated
> > automatically by filling the index to the model and defining the model
> > to the list.
>
> I'm not sure what you mean. The selection model (which is set up by the view)
> keeps track of the selected indexes in the model.
>
> > I think I do so by:
> >
> > Defining the model class:
> >
> > class myListModel(QAbstractListModel):
> > def __init__(self, datain, parent=None, *args):
> > """ datain: a list where each item is a row
> > """
> > QAbstractTableModel.__init__(self, parent, *args)
> > self.listdata = datain
>
> This looks OK.
>
> > In the main view I call a subfunction to set the index to the model:
> >
> > self.listModel = myListModel(TitleTrack, self)
> >
> > #init listView
> > self.listViewTitleFill()
> >
> > Where TitleTrack is a python list.
>
> So, you're putting data into the model.
>
> > def listViewTitleFill(self):
> > """ init ListViews and build list models """
> > self.listModel = myListModel(TitleTrack, self)
> > self.listViewTitle.setModel(self.listModel)
> > self.listViewTitle.setSelectionMode(
> > QAbstractItemView.SingleSelection)
> >
> > This part works fine. The list is filled and I can select items in
> > there.
>
> OK. You're defining the model again here, of course...
>
> Now, this is the problem part:
>
> > self.connect(self.listViewTitle,
> > SIGNAL("selectionChanged(QItemSelection, QItemSelection)"),
> > self.titleSelected)
> >
> > With this connect string I try to connect to the signal that is emitted
> > when the selection is changed. But it is never called.
> > What am I missing here.
>
> You need to connect the selection model's signal to the titleSelected() slot:
>
> self.connect(self.listViewTitle.selectionModel(),
> SIGNAL("selectionChanged(QItemSelection, QItemSelection)"),
> self.titleSelected)
>
> Does that work?
>
> David
More information about the PyQt
mailing list