0

TableViewを実装するモデルからのデータを表示する QMLがありますQAbstractItemModel。ただし、直接使用する代わりにQSortFilterProxyModel、ソートおよびフィルタリング機能用にラップします。

たとえば、高度にフィルター処理されたビューがあり、行をアクティブ化すると、アクティブ化されたモデル アイテムで何かをしたいとします。しかし、ハンドラーはクリックした行番号のみを提供しますが、アイテムの基になるモデルを照会するonActivated()必要があると思います。また、モデルが行をインデックスにマッピングするようになったため、次のQModelIndexようなものを実装することもできません。model.get(row)

4

1 に答える 1

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)
于 2016-05-18T05:39:37.260 に答える