【发布时间】:2014-11-13 20:17:46
【问题描述】:
考虑我有具有以下项目层次结构的 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() 重新分配小部件后应用程序崩溃。
我的错误是什么?
【问题讨论】:
标签: c++ qt hierarchy qtreewidget qtreewidgetitem