Перетаскивание в QTreeWidget не принимает дочерние объекты

В настоящее время я сталкиваюсь с проблемой при использовании QTreeViewWidget в Qt 5.7.

Случай 1: Копировать / Переместить элемент из виджета 2 в виджет 1

Только перетаскиваемый элемент успешно отбрасывается без его иерархии.

Случай 2: Копировать элемент из виджета 1 в виджет 1

Только перетаскиваемый элемент успешно отбрасывается без его иерархии.

Случай 3: переместить элемент из виджета 1 в виджет 1

Перетаскиваемый элемент успешно удален с его иерархией.

Вопрос

Что вызывает это поведение и как его можно исправить, чтобы иерархия Предмета всегда копировалась / перемещалась вместе с ним?

Редактировать 1: После попытки воспроизвести его вручную с помощью функции "insert", я думаю, это может быть связано с ошибкой родительского контроля, когда дочерние элементы исходной иерархии сохраняют свой исходный родитель вместо клонируемого родительского элемента.

Образец поколения:

QList<QTreeWidgetItem *> items;

/*Interlock*/
QTreeWidgetItem* interlock;
interlock = new QTreeWidgetItem((QTreeWidget*)0, QStringList("Interlock"));

interlock->addChild(new QTreeWidgetItem((QTreeWidget*)0, QStringList("Bypass")));
interlock->addChild(new QTreeWidgetItem((QTreeWidget*)0, QStringList("Bypass")));

items.append(interlock);

/*Alarme*/
QTreeWidgetItem* alarme;
alarme = new QTreeWidgetItem((QTreeWidget*)0, QStringList("Alarme"));

alarme->addChild(new QTreeWidgetItem((QTreeWidget*)0, QStringList("Criticité")));

//Ajout de 1 Interlocks
alarme->addChild(interlock->clone());

items.append(alarme);

treeWidgetModels->insertTopLevelItems(0, items);

Виджеты:

treeWidget = new QTreeWidget(this);
treeWidget->setColumnCount(2);
treeWidget->setDragEnabled(true);
treeWidget->viewport()->setAcceptDrops(true);
treeWidget->setDropIndicatorShown(true);
treeWidget->setEditTriggers(QAbstractItemView::SelectedClicked);
treeWidget->setDefaultDropAction(Qt::MoveAction);

treeWidgetModels = new QTreeWidget(this);
treeWidgetModels->setColumnCount(2);
treeWidgetModels->setDragEnabled(true);
treeWidgetModels->setDefaultDropAction(Qt::CopyAction);

Виджет (вверху - пункт назначения, внизу - модели):

0 ответов

Другие вопросы по тегам