问题说明如何在QtreeWidget中提高和降低[更改] QTreeWidget项目的位置,
答案 0 :(得分: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);
一旦项目在模型中移动,您的树视图小部件就应该自行更新
如果您需要更改树视图显示的项目的大小,请安装item delegate并覆盖其sizeHint方法
希望这有帮助,尊重
答案 1 :(得分:4)
我发现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);
}
这里有一个移动项目的代码。从这里你应该能够找到如何立即将其移动:)!