QTreeWidgetItem с двумя родителями

#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;
}