[PyQt] Signal on Selection in QTreeView
fossks at cox.net
fossks at cox.net
Tue Mar 18 20:37:46 GMT 2008
I have been successful in getting the row number back to me for a selected row. I have found that the returned row number is not consistent with the list but with the view. Therefore row '0' when I start is row '10' on a 10 item list when the view is sorted in the opposite direction.
Is there a simple method of retrieving the item data out of the list model for the selected item?
Kevin
---- Matt Newell <newellm at blur.com> wrote:
> On Tuesday 18 March 2008 10:52:20 Matt Newell wrote:
> > On Tuesday 18 March 2008 09:46:06 fossks at cox.net wrote:
> > > Phil/Andreas,
> > >
> > > I've been experimenting again using some of the recommendations and
> > > some examples I have found. Please look at the new example I am working
> > > with, which is below.
> > >
> > > I can now have a reaction to a selected item in a list. When
> > > something is selected, the 'slot' function is called and is run. Great!
> > > In this case it prints out some details including the number of rows,
> > > etc.
> > >
> > > Now I am still trying to access a reference to the selected item so I
> > > can pull the data from the original list and display it elsewhere in a
> > > different widget. The original author of this modified program included
> > > a function call called "data". However, I cannot figure out how to use
> > > it. I guess my hangup is the index and role fields. I don't know what to
> > > put in those fields to get the currently selected item.
> > >
> > > In my case I need the current row, that is the current row number. I
> > > don't need to fiddle around with the row entries as I already have them
> > > in the original list.
> > >
> > > Could someone help me write a simple function called
> > > "get_current_row_number", which returns an integer indicating the
> > > highlighted row?
> > >
> > > Kevin
> >
> > You just need to get the QModelIndexes from the QItemSelection 'selected'
> > object in your slot, then call row() on them.
> >
> > The QItemSelection is a list of QItemSelectionRange objects. Each
> > QItemSelectionRange contains 1 or more selected QModelIndexes, represented
> > from a topleft to bottom right with the same parent.
> >
> > > def slot(self, selected, deselected):
> >
> > # this will give you an index for each row and col
> > # so if you have multiple columns selected you will get duplicates
> > for idx in selected.indexes():
> > print idx.row()
> > # Here is how to get the rows even if there are multiple columns selected
> > # This ignores the indexes' parents, which is fine if your
> > # model is 2 dimensional
> > for selectionRange in selected:
> > for i in
> > range(selectionRange.topLeft().row(),selectionRange.bottomRight().row()):
> > print "Row %i selected" % i
> >
>
> Sorry, that last part should be -
> for i in range(selectionRange.top(),selectionRange.bottom() + 1):
> print "Row %i selected" % i
>
>
> >
> > Matt
> > _______________________________________________
> > PyQt mailing list PyQt at riverbankcomputing.com
> > http://www.riverbankcomputing.com/mailman/listinfo/pyqt
>
>
More information about the PyQt
mailing list