4

QtreeWidget 内の QTreeWidgetItems をどのように上げたり下げたり [の位置を変更] したりするのですか?

4

2 に答える 2

4

アイテムの位置を操作できるようにするには、モデルオブジェクトを使用する必要があると思います(これがやりたい場合)。以下の例を確認してください。抽象モデルの最初の項目を一番下に移動します。

QAbstractItemModel* model = your_tree_view->model();

QModelIndex index0 = model->index(0, 0);
QMap<int, QVariant> data = model->itemData(index0);
// check siblings of the item; should be restored later
model->removeRow(0);

int rowCount = model->rowCount();
model->insertRow(rowCount);
QModelIndex index1 = model->index(rowCount, 0);
model->setItemData(index1, data);

アイテムがモデル内で移動されると、ツリービュー ウィジェットはそれに応じて自身を更新する必要があります

ツリービューに表示されるアイテムのサイズを変更する必要がある場合は、アイテム デリゲートをインストールし、そのsizeHintメソッドをオーバーライドします。

これが役に立てば幸いです、よろしく

于 2010-01-10T06:24:52.707 に答える
3

セルジュのソリューションは、単純な上へ/下へ移動するだけでも非常に複雑であることがわかりました。QTreeWidget を使用しているため、実際にはこの問題に対する非常に簡単な解決策があります。

QTreeWidgetItem* item = your_qtreewidget->currentItem();
int              row  = your_qtreewidget->currentIndex().row();

if (item && row > 0)
{
    your_qtreewidget->takeTopLevelItem(row);
    your_qtreewidget->insertTopLevelItem(row - 1, item);
    your_qtreewidget->setCurrentItem(item);
}

ここにアイテムを上に移動するコードがあります。これから、すぐに下に移動する方法を見つけることができるはずです :) !

于 2012-05-24T16:53:28.817 に答える