2016-05-10 12 views
0

QA 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) 
関連する問題