QTreeWidget Перетаскивание между двумя деревьями с использованием подклассовых проблем QTreeWidgetItems

У меня 2 вопроса.

  1. Я подкласс QTreeWidgetItemA/B/C. Я настроил их так, чтобы они имели собственные флаги, чтобы некоторые из них могли принимать событие drop / другие не /UserRules и так далее. Когда я перетаскиваю эти WidgetItems из QTreeWidget_A в QTreeWidget_B, виджеты во втором представлении являются стандартными QTreeWidgetItem, а не QTreeWidgetITemA/B/C. Кто-нибудь знает, есть ли флаг или что-то, что мне нужно передать, чтобы получить правильный результат? Если я перетаскиваю элементы в пределах одного вида - просто переупорядочиваю - все работает как положено, и вновь перемещенные элементы являются правильным подклассом. я использую event->setDropAction(Qt::MoveAction); на моей функции dropEvent на QTreeWidget.

  2. Это почти тот же вопрос, что и здесь> Перетаскивание в QTreeWidget не принимает дочерние объекты. Возможно, у some1 есть какие-либо предложения, как это решить? Насколько я могу сказать, я должен переопределить dropEvent. Проверьте, является ли отправитель не тем же treeWidget, и если нет, то заново создайте / добавьте элементы самостоятельно, а не полагайтесь на автоматизацию удаления действий. Я думаю, мне нужно найти способ правильно прочитать mimeData, чтобы сохранить иерархию, а затем просто заново создать QTreeWidgetItemA / B / C

Изменить: я приложил пример проекта здесь. Скомпилировано в cLion/Visual/cMake/Qt/. Вы можете использовать creator, чтобы открыть файл cMake, чтобы открыть проект в qtCreator. ExampleTest Показывает 2 проблемы. Если вы создаете группу и слой, поместите слой в группу, выберите оба и перетащите для просмотра ниже. Результат неверный. Если вы создадите группу + слой и перетащите их ниже, а затем перетащите группу поверх слоя, слой примет группу - не должно.

Спасибо за любую помощь. С уважением, Дариуш

0 ответов

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