2016-05-10 6 views
0

У меня есть QML TableView, где я отображаю некоторые данные из модели, реализующей QAbstractItemModel. Но вместо того, чтобы использовать его напрямую, я переношу его в QSortFilterProxyModel для функций сортировки и фильтрации.Карта QML TableView строка на активированной обратной стороне на QModelIndex

Теперь, если я, например. имеют сильно фильтрованный вид и активируют строку, я хочу что-то сделать с активированным элементом модели. Но обработчик onActivated только дает мне номер строки, на который я нажал, но я думаю, что мне нужен QModelIndex для запроса базовой модели для элемента. Я также не могу реализовать что-то вроде model.get (row), поскольку модель теперь отображает строки в индексы.

ответ

0

Я понял, как это должно работать. Вы реализуете индекс и данные в пользовательских sortfilterproxymodel так:

@pyqtSlot(int, int, result=QModelIndex) 
@pyqtSlot(int, int, QModelIndex, result=QModelIndex) 
def index(self, row, column, parent=QModelIndex()): 
    return super().index(row, column, parent) 

@pyqtSlot(QModelIndex, int, result=QVariant) 
def data(self, index, role=Qt.DisplayRole): 
    return super().data(index, role) 

Теперь вы можете позвонить, например, как это в QML

property var qt_UserRole: 256 // FIXME: Qt.UserRole is not exported 
model.data(model.index(row, 0), qt_UserRole + 1) 

 Смежные вопросы

  • Нет связанных вопросов^_^