问题说明了你如何在 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
我发现 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 回答