On Tuesday 18 March 2008 09:46:06 [EMAIL PROTECTED] 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


Matt
_______________________________________________
PyQt mailing list    [email protected]
http://www.riverbankcomputing.com/mailman/listinfo/pyqt

Reply via email to