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

我发现 serge 的解决方案对于简单的上移/下移也非常复杂。由于您使用的是 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);
}

Here you have a code to move an item up. From this you should be able to find how to move it down in no time :) !

于 2012-05-24T16:53:28.817 回答