Как получить текущий столбец и направление его сортировки 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_()