Поднять и опустить QTreeWidgetItem в QTreeWidget? - PullRequest
4 голосов
/ 10 января 2010

Вопрос говорит сам за себя, как вы поднимаете и опускаете [меняете позиции] QTreeWidgetItems в QtreeWidget,

Ответы [ 2 ]

4 голосов
/ 24 мая 2012

Я нашел решение сержа довольно сложным для простого движения вверх / вниз.На самом деле, есть гораздо более простое решение этой проблемы, поскольку вы используете 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);
}

Здесь у вас есть код для перемещения элемента вверх.Исходя из этого, вы сможете быстро найти способ опустить его :)!

4 голосов
/ 10 января 2010

Полагаю, вам нужно будет использовать объект модели, чтобы иметь возможность манипулировать позициями предметов (если это то, что вы хотите сделать). Пожалуйста, проверьте пример ниже; перемещает первый элемент абстрактной модели вниз.

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 метод

надеюсь, это поможет, с уважением

...