在QTreeWidget中升高和降低QTreeWidgetItem?

时间:2010-01-10 03:01:41

标签: python qt pyqt qtreewidget

问题说明如何在QtreeWidget中提高和降低[更改] QTreeWidget项目的位置,

2 个答案:

答案 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);
}

这里有一个移动项目的代码。从这里你应该能够找到如何立即将其移动:)!