Рассмотрим я QTreeWidget с иерархией следующие вопросы:Как вставить ребенка в иерархию QTreeWidget?
top_item
|--child
Каждый элемент присвоила с setItemWidget()
виджете. мне нужно вставить еще одного ребенок между моими первыми двумя элементами, как это:
top_item
|--another_child
|--child
Я пытаюсь сделать это с помощью следующего кода:
QTreeWidgetItem* top_item = new QTreeWidgetItem;
ui->treeWidget->addTopLevelItem(top_item);
QTreeWidgetItem* child_item = new QTreeWidgetItem;
top_item->addChild(child_item);
ui->treeWidget->setItemWidget(top_item, 0, new QPushButton);
ui->treeWidget->setItemWidget(child_item, 0, new QPushButton);
// ---- let's insert another child ----
auto last_children = top_item->takeChildren();
QTreeWidgetItem* another_child_item = new QTreeWidgetItem;
top_item->insertChild(0, another_child_item);
ui->treeWidget->setItemWidget(another_child_item, 0, new QPushButton);
another_child_item->addChildren(last_children);
Это работает отлично, за исключением одного момента - он потерял присвоенные виджеты. Я попытался взять и сохранить виджеты, прежде чем принимать детей с
QWidget* widget_from_child_item = ui->treeWidget->itemWidget(child_item, 0);
ui->treeWidget->removeItemWidget(child_item, 0);
, но после вызова takeChildren()
все назначенные виджеты были удалены, и приложение сбой после переназначения виджетов с setItemWidget()
.
В чем моя ошибка?
проблема заключается не в том, чтобы вставить ребенок в существующую иерархию, проблема заключается в том, чтобы сохранить детские виджеты. – MaxNes
попробуйте мое решение. Если я правильно понял, вы испортили использование 'removeItemWidget' и' takeChildren'. Также постарайтесь улучшить вопрос. –
Да, это первое, что я сделал: попробуйте ваше решение. Хорошо, спасибо за совет, попробуй скоро. – MaxNes