#c #qt #qtreewidget #qtreewidgetitem
#c #qt #qtreewidget #qtreewidgetitem
Вопрос:
Могу ли я каким-либо образом прикрепить один QTreeWidgetItem к двум (или более) узлам одновременно? Точно так же, как это:
parent1
└child1
parent2
└child1
Если я просто сделаю addChild()
для обоих родителей, дочерний элемент появится только у первого родителя. Возможно ли это вообще? Или такой результат может быть достигнут только путем полного копирования потомка?
Ответ №1:
В инструкциях говорится:
Если дочерний элемент уже был вставлен куда-то еще, он не будет вставлен снова.
Это означает, что единственным вариантом является полное копирование дочернего элемента. Примерно так:
QTreeWidgetItem* copy(QTreeWidgetItem* item)
{
if (item == nullptr)
{
return nullptr;
}
QTreeWidgetItem* out = new QTreeWidgetItem(*item);
for (int i = 0; i < item->childCount(); i )
{
out->addChild(copy(item->child(i)));
}
return out;
}