Я пытаюсь построить интерфейс с 2 QTreeWidgets, который пользователь может перетащить \ удалить элементы между ними.PyQt - QTreeWidget - Ограничить глубину при перетаскивании
Я хочу, чтобы один виджет дерева имел только глубину 1 (перетаскивание элемента из любого виджета дерева, на вложенном элементе ничего не будет делать или желательно перемещать как родственный), а другой с глубиной 0 (ничего не делать \ двигайтесь как брат, если перетаскиваете элемент).
QtDesigner доставил мне большую часть пути, но я не могу понять, как ограничить (или установить вообще) глубину вложенных элементов.
Я до сих пор своего рода новичок в Qt (и PyQt ..), так что извините, если это очевидно ..
Цените любую помощь, вы можете предложить, спасибо.
Unset 'Qt :: ItemIsDropEnabled' флаг с использованием' QTreeWidgetItem :: setFlags' для элементов, которые не должны использоваться в качестве целей снижения (т.е. предметов, которые не должны иметь детей, в вашем случае). –
Спасибо, что ответили. Установка этих флагов отлично подходит для исходной иерархии, но после того, как я потерял родительский элемент или перетащил его в новый, который будет использоваться в качестве родителя, я получаю элемент, у которого не могут быть дети. Кроме того, я все еще могу отказаться родитель с его детьми в других родителях (я могу отключить перетаскивание для родителей, но потом я не могу удалить его дочерние элементы и использовать его как дочерний элемент в другом родителе или перетащить его на другой виджет дерева). Я предполагаю, что вы не можете получить это поведение, просто установив таинственный флаг глубины, правильно ...? так что, возможно, мне нужно создать сигналы и перехватить drag \ drop? – avivba