【发布时间】:2010-01-10 03:01:41
【问题描述】:
问题说明了你如何在 QtreeWidget 中提高和降低 [更改] QTreeWidgetItems 的位置,
【问题讨论】:
标签: python qt pyqt qtreewidget
问题说明了你如何在 QtreeWidget 中提高和降低 [更改] QTreeWidgetItems 的位置,
【问题讨论】:
标签: python qt pyqt qtreewidget
我相信您需要使用模型对象才能操纵项目位置(如果这是您想要做的)。请检查下面的示例;它将抽象模型的第一项移动到底部。
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 方法
希望这会有所帮助,问候
【讨论】:
我发现 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);
}
这里有一个向上移动项目的代码。从这里您应该能够立即找到如何将其向下移动:)!
【讨论】: