QtreeWidget 内の QTreeWidgetItems をどのように上げたり下げたり [の位置を変更] したりするのですか?
質問する
3993 次
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 に答える