Что-то никак не разберусь, в чем косяк.
В классе, наследнике QTableView для horizontalHeader() отключаю сортировку, но включаю индикацию сортировки. Визуально все нормально, значок сортировки есть и переключается, но не посылается сопутствующий сигнал.
Ниже кусок кода на питоне. Я понимаю, что здесь в основном сишники, но думаю код будет понятен, хотя бы в той части, где "настраивается" сортировка.
class DbAbstractView(QTableView):
def __init__(self, parent = None):
QTableView.__init__(self, parent)
self.setSelectionMode(QAbstractItemView.SingleSelection)
self.setSelectionBehavior(QAbstractItemView.SelectRows)
self.setSortingEnabled(False)
self.horizontalHeader().setSortIndicatorShown(True)
self.horizontalHeader().setClickable(True)
self.horizontalHeader().setSortIndicator(0, Qt.AscendingOrder)
self.connect(self.verticalScrollBar(), SIGNAL('valueChanged(int)'), self.viewportChanged)
self.horizontalHeader().connect(hh, SIGNAL('sortIndicatorChanged(int, int)'), self.sortChanged)
def resizeEvent(self, event):
self.viewportChanged()
def viewportChanged(self):
lastRow = self.rowAt(self.viewport().height())
if lastRow == -1:
lastRow = self.model().rowCount()
self.model().viewportChanged(self.verticalScrollBar().value(), lastRow + 1)
def sortChanged(self, col, order):
print 'sort chaged'