alphanumeric
alphanumeric

Reputation: 19329

How to control sorting arrow indicator on QTableView

enter image description here

When this QTableView is created I want the sorting "arrow" indicator to be shown on the column at the middle. The arrow needs to be pointing down. How to achieve this?

from PyQt4 import QtCore, QtGui
app = QtGui.QApplication([])

class Model(QtCore.QAbstractTableModel):
    def __init__(self):
        QtCore.QAbstractTableModel.__init__(self)
        self.items = [[1, 'one', 'ONE'], [2, 'two', 'TWO'], [3, 'three', 'THREE']]

    def rowCount(self, parent=QtCore.QModelIndex()):
        return 3 
    def columnCount(self, parent=QtCore.QModelIndex()):
        return 3

    def data(self, index, role):
        if not index.isValid(): return 

        if role == QtCore.Qt.DisplayRole:
            return self.items[index.row()][index.column()]

tableModel=Model()
tableView=QtGui.QTableView() 
tableView.setModel(tableModel)
tableView.setSortingEnabled(True)

tableView.show()
app.exec_()

Upvotes: 2

Views: 1085

Answers (1)

Gwen
Gwen

Reputation: 1452

You have to use the sortByColumn function, using Descending Order to make the arrow be "pointing down":

tableView.sortByColumn(1, QtCore.Qt.DescendingOrder)

Upvotes: 1

Related Questions