Как получить текущий столбец и направление его сортировки QTableView

Этот код создает один QTableView, При щелчке по столбцу отображается стрелка, указывающая направление сортировки столбца. Щелчок по самому элементу tableView выводит индекс, по которому щелкнули. При щелчке элемента tableView я хочу узнать, какой из трех столбцов (заголовков) является текущим (столбец с отображаемой стрелкой) и в каком направлении указывает сортировочная стрелка: вверх или вниз. Как этого добиться?

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 in [QtCore.Qt.DisplayRole, QtCore.Qt.EditRole]:
            return self.items[index.row()][index.column()]

def onClick(index):
    print 'clicked index:  %s'%index

def sortIndicatorChanged(column=None, sortOrder=None):
    print 'sortIndicatorChanged: column: %s, sortOrder: %s'%(column, sortOrder)

tableModel=Model()
tableView=QtGui.QTableView() 
tableView.setModel(tableModel)
tableView.setSortingEnabled(True)
tableView.clicked.connect(onClick)
tableView.horizontalHeader().sortIndicatorChanged.connect(sortIndicatorChanged)
tableView.show()

app.exec_()

0 ответов

Другие вопросы по тегам