Russian Qt Forum

Qt => Model-View (MV) => Тема начата: Sky от Август 05, 2010, 14:58



Название: [РЕШЕНО] Не могу получить сигнал sortIndicatorChanged
Отправлено: Sky от Август 05, 2010, 14:58
Что-то никак не разберусь, в чем косяк.
В классе, наследнике 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'


Название: Re: Не могу получить сигнал sortIndicatorChanged
Отправлено: Sky от Август 05, 2010, 15:23
Извиняюсь, я протупил. :)
вместо "sortIndicatorChanged(int,int)" надо было "sortIndicatorChanged(int,Qt::SortOrder)".