Как выбрать QGraphicsItem без выделения всей группы (к которой принадлежит этот элемент) - PullRequest
3 голосов
/ 29 октября 2010

Интересно, можно ли выбрать элемент, принадлежащий одной группе, без выделения всей группы.

Я пытаюсь создать группу предметов, которые можно перемещать (все предметы перемещаются вместе), но ни один из них не может быть перемещен отдельно. Но я также хочу иметь возможность выбирать элементы внутри этой группы, а затем что-то делать с ними, например, изменять порядок, удалять, менять их цвет и т. Д.

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

Группа A, которая содержит группу B. Группа B содержит 3 строки. Если я нажму двойной щелчок на группе A, тогда я смогу выбрать группу B. Если я снова нажму двойной щелчок на B, то я смогу выбрать строки внутри группы B. Нажатие Esc делает двойной щелчок. Проблема в том, что я понятия не имею, как это сделать, потому что весь выбор направляется родителям, а затем - всем их детям.

1 Ответ

0 голосов
/ 29 октября 2010

Вы не можете использовать QGraphicsItemGroup, чтобы сделать это, потому что выбор одного элемента в группе автоматически выбирает все другие члены группы.

Я бы создал подкласс QGraphicsItem для создания класса RootItem.Этот класс будет содержать два списка.Одним из них является список обычных QGraphicsItems, которые составляют визуальные элементы самой группы, связанные с этим RootItem.Другой список относится к другим элементам RootItem, которые относятся к этому (например, к группе B).

Вам просто нужно убедиться, что вы тщательно контролировали, какие элементы можно выбрать в любое время и как распространяются взаимодействия между ними.items.

Надеюсь, это поможет.

...