Hi all, a newbie and throughly enjoying pyqt; but and a little  problem.

I've got a treeview/model which is loaded via json.

I want to select a row in code, eg after a refresh of data to restore the previous row or to select a new one.

The problem I'm having is that I can seem to be able to select a row properly, it ends up being a single cell which throws and error in the selectionChanged() handler. Am also a bit confused how to create modelIndex's that span a row.

Can anyone help please, tia
pete

##########################################################################
       ##  Model
       self.model = QtGui.QStandardItemModel(0, 3, self)
self.model.setHeaderData(wTestCategoryColumns.test_category_id, QtCore.Qt.Horizontal, QtCore.QVariant("#")) self.model.setHeaderData(wTestCategoryColumns.test_category_item, QtCore.Qt.Horizontal, QtCore.QVariant("Item")) self.model.setHeaderData(wTestCategoryColumns.test_category, QtCore.Qt.Horizontal, QtCore.QVariant("Test Category"))


##########################################################################
       ##  Tree
       self.tree = QtGui.QTreeView()
       #self.tree.setModel( self.proxyModel )
       self.tree.setModel( self.model )
       self.tree.setSortingEnabled(True)
       self.tree.sortByColumn( 2 )
self.tree.header().setStretchLastSection( True )
       self.tree.setRootIsDecorated(False)
       self.tree.setAlternatingRowColors(True)

       self.tree.setSelectionBehavior( QtGui.QAbstractItemView.SelectRows )
       self.tree.setSelectionMode(QtGui.QTreeView.ExtendedSelection)

       sm = self.tree.selectionModel()
self.connect(sm, QtCore.SIGNAL('selectionChanged(const QItemSelection&,const QItemSelection&)'), self.on_selection_change)

##########################
## Selection change
   def on_selection_change(self, newSelection, oldSelection):
### If its selected below, then this bombs out as the indexes ain't there ie complete row
       print "new=", newSelection.indexes()
self.params['test_category_id'] = int( self.model.itemFromIndex( newSelection.indexes()[0] ).text() ) self.params['test_category'] = self.model.itemFromIndex( newSelection.indexes()[2] ).text()


### LOAD .. and this is where one is confused .....
       if row_to_select:
           modelIndexL = self.model.createIndex( row_to_select, 0)
           modelIndexR = self.model.createIndex( row_to_select, 2)
           #print "mi=", modelIndexL, modelIndexR
self.tree.selectionModel().select(QtGui.QItemSelection(modelIndexL, modelIndexR), QtGui.QItemSelectionModel.Columns) #self.tree.selectionModel().setCurrentIndex( modelIndexL , QtGui.QItemSelectionModel.Rows ) # < tried Columns/Select etc ;-(


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

Reply via email to