[PyQt] trivial question regarding standarditemmodels

Greg Smith gsmith at troublemakerstudios.com
Fri Jun 12 15:57:45 BST 2009

Nevermind figured out what my problem was, it was unrelated to PyQt and
a threading issue.



From: pyqt-bounces at riverbankcomputing.com
[mailto:pyqt-bounces at riverbankcomputing.com] On Behalf Of Greg Smith
Sent: Friday, June 12, 2009 9:36 AM
To: pyqt
Subject: RE: [PyQt] trivial question regarding standarditemmodels


Okay tell me if I'm doing something wrong, I am doing some basic test
executions on button logic

Here is what I got so far 



    sel_idxs = self.ui.myListView.selectedIndexes()

    for i in sel_idxs:

        msg = 'row: %s, col: %s' % (i.row(), i.column())

        print msg


so in my listview I have 4 items, I select the first and third item
which should give me row indexes 0 and 2, what gets printed is this:

row: 2, col:0

row: 2, col:0


...umm that's not right. I try other selection combinations, and it
seems that only the last item that was selected, that row index gets

Only time it really works is if I make single selections. But I want the
user to be able to select which ever and the appropriate list of indexes
is returned.

I'm at a loss on this one, I thought I had my problem pegged until I did
this test.


Any clues? This is beginning to drive me nuts!






From: pyqt-bounces at riverbankcomputing.com
[mailto:pyqt-bounces at riverbankcomputing.com] On Behalf Of Greg Smith
Sent: Thursday, June 11, 2009 6:12 PM
To: pyqt
Subject: [PyQt] trivial question regarding standarditemmodels


Hey everyone. I have a QListView widget that is populated by a
QStandardItemModel, which I populated using the appendRow method with a
list containing QStandardItems. 

My question is that I am creating a gui to where the user can select
multiple Items in the listview and press a button to remove those items
from the list. 


Now for the most part, I figured the logic theory out in my head on how
to do this, where I am stuck is executing the logic within the context
of an ItemModel. Up to this point 

I've learned enough about ItemModels to get me in trouble, but not
enough to have a complete understanding of whats actually happening.
Plus all the lists I made previously only used 

Single selection and I was able to get the selection I needed from a
selectionChanged method. I also figured out how to set the selection of
a ListView  programmatically with not too much trouble. However where I
am stuck, is trying to figure out how to access what row information
based off of whats selected or not selected in its related listview


Here is what I plan on doing in my button logic


1. newItemModel = existingItemModel()

2. for rowInt in  range(existingModel.rowCount):

3.     rowIndex = existingModel.index(rowInt, 0)

4.     if  rowIndex not in listView.selectedIndexes():

5.         newItemModel.addRow(existingItemModel.takeRow(rowInt)

6.  listView.setModel(newItemModel)


Where I think I am getting hung up is on row 3 or 4, because I don't'
know if that maintains a 1 to 1 relation ship between the QModelIndex
item created by the index() method and the QModelIndex item that is
created from the selectedIndex() method.  Again, like I said, I know
enough to get in trouble. This could be an entirely wrong approach.


So not sure what to do actually, so any advice on the matter would be
truly appreciated.



-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.riverbankcomputing.com/pipermail/pyqt/attachments/20090612/e4e58974/attachment.html

More information about the PyQt mailing list