Как выбрать QGraphicsItem, не выбирая целую группу (к которому принадлежит этот предмет)

StackOverflow https://stackoverflow.com/questions/4047780

  •  27-09-2019
  •  | 
  •  

Вопрос

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

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

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

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

Это было полезно?

Решение

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top