2

私は QStandardItemModel で QTreeView を使用しており、ボタンを使用してツリーを上下にアイテムを移動する方法を理解しようとしています。ドラッグ アンド ドロップは問題なく実行できますが、「上に移動」および「下に移動」機能に関連付けられたボタンをいくつか用意したいと考えています。この件については何も見つかりません。モデルオブジェクトには「moveRow()」関数があるようですが、ドキュメントが見つからないため、必要なものかどうかわかりません。正しい方向に私を向けるためにあなたが与えることができる情報は大歓迎です!

PSここに私のQT Creatorの統計があります:Qt Creator 2.6.2ベースのQt 5.0.1(64ビット)

4

1 に答える 1

3

あなたの勘は正しいです。moveRow()呼び出すのに適した関数です。

アイテムを 1 つの親 (結局のところツリーです) 内で移動するには、 を実行しますmoveRow(parent, index.row(), parent, index.row() + delta)。ここでdeltaは、下に移動するか上に移動するかに応じて、それぞれ 1 または -1 に設定されます。

親の間でアイテムを移動できるようにする場合は、アイテムが親を超えて移動する場合に移動先の親を特定する追加のロジックが必要になります。

移動ボタンが移動するアイテムから分離されている場合、設計が悪いと見なされることに注意してください。デリゲートは、ワンクリックでアイテムを移動できるように、各アイテムの行に上向き矢印と下向き矢印を表示する必要があります。連続した選択がある場合、デリゲートは上下の矢印をマージしてすべての項目をカバーする必要があります。選択範囲が連続していない場合、上下の矢印は表示されなくなります。

個別のボタンでは、2 回クリックする必要があります。最初に項目を選択してから、上下にクリックします。これ 、ユーザーエクスペリエンスの観点から言えば最悪です。

于 2013-09-06T17:26:40.560 に答える