7

テーブルヘッダーをクリックしてアイテムを並べ替えることができるようにQTableViewQAbstractTableModelとを使用しています。QSortFilterProxyModelユーザーがビュー内の行をドラッグして手動で並べ替えるオプションを追加したいと思います。リスト内の順序を変更するためだけに、外部アプリケーションとの間でドラッグアンドドロップを実行できる必要はありません。また、モデル内のデータを変更する必要はありません。ビュー内で順序を変更するだけです。

私はドキュメントを調べてきましたが、、、、を実装する必要があるようですが、mimeTypesこれは非常に複雑になります。モデル内の一部のデータは実際にはビューに表示されません。前述のように、モデル内のデータの順序を変更したくありません。大量のコーディングを行わずに、アイテムをドラッグして並べ替えを変更する方法はありますか(ヘッダーがすでに実行できるように)?mimeDatadropMimeData

4

1 に答える 1

11

非推奨のメソッドを削除するために QT5 用に更新

PyQT を使用している場合、要件に対して行う必要があるのは次のとおりです。

your_tableview.verticalHeader().setSectionsMovable(True)
your_tableview.verticalHeader().setDragEnabled(True)
your_tableview.verticalHeader().setDragDropMode(QAbstractItemView.InternalMove)

その後、すすぎ、horizontalHeader並べ替えが必要な場合は繰り返します。

あなたは絶対に正しいです。この機能のモデルに触れる必要はなく、知る必要さえありませんQSortFilterProxyModelこれは、モデル自体に対してデコレータを 適切に使用することによってさらに実証されます。

mimeTypes とそのすべてについて見たものは、他のウィンドウ/アプリケーション/デスクトップなどからさまざまなソースの実際のオブジェクトをドラッグ アンド ドロップするためのものであり、現在達成しようとしているものには必要ありません。

于 2013-04-16T19:18:50.067 に答える