2

アイテムを挿入する QTreeWidget があり、ユーザーは列を選択して並べ替えることができます。項目が挿入されると、並べ替えが自動的に行われるのではなく、最後に追加されます。ヘッダーをクリックして昇順/降順を切り替えると、現在のアイテムが並べ替えられます。

sortItems() を呼び出して、sortColumn() から返された列を使用できると考えましたが、ユーザーが昇順または降順の並べ替えを行っているかどうかを確認する方法がわかりません。

私はこれの効率について心配していないので、挿入が完了するまで待ってから並べ替えを行いたくありません。リアルタイムでソートされたリストが欲しいです。

ありがとう!

4

2 に答える 2

3

ツリーウィジェットがtreeWidgetと呼ばれる場合、QTreeWidgetの親QTreeViewからのheader()メソッドを呼び出してから、QHeaderViewクラスからsortIndicatorOrder()を呼び出すことができるはずです。

treeWidget->header()->sortIndicatorOrder()

これにより、ユーザーの現在の並べ替え順序がわかり、これに従って挿入時に並べ替えを適用できます。

于 2009-04-25T03:12:11.713 に答える
2

テスト用の設定はありませんが、ドキュメントによると、これにより、アイテムが挿入されるときに並べ替えが発生するはずです。

...
treeWidget.sortByColumn(0, Qt::AscendingOrder); // column/order to sort by
treeWidget.setSortingEnabled(true);             // should cause sort on add

Qtは、パフォーマンスコストが発生するため、これを行わないことをお勧めします。すべての追加が完了したら、並べ替えを有効に設定する必要があると言っています。お役に立てれば。

于 2009-04-25T03:03:51.780 に答える