2009-04-25 15 views
3

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

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

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

ありがとうございます!

答えて

2

あなたのツリーウィジェットはtreeWidget呼び出された場合、あなたはQHeaderViewクラスからQTreeWidgetの親QTreeViewからである()メソッド、そしてsortIndicatorOrder()ヘッダを呼び出すことができるようになります。これにより

treeWidget->header()->sortIndicatorOrder() 

、ユーザーの現在の並べ替え順序を知っていて、これに基づいて並べ替えにソートを適用できます。

+0

ありがとう、私はちょうどこの機能を見過ごしたと思います。それは今働いている。 – staackuser2

2

私はテストのためのセットアップを持っていませんが、ドキュメントに従って、これはアイテムが挿入されるとソートが発生するはずです。

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

Qtでは、パフォーマンスが低下するため、すべての追加が完了した後にソートを有効にする必要があるため、これを行うことをお勧めします。お役に立てれば。

+0

挿入時にソートすれば、鈍いことを指摘するために+1してください。一度に1つのアイテムを追加するだけで、バッチでは追加しない場合は、これは問題ではありません。 –