2010-10-28 28 views
3

Je me demande s'il est possible de sélectionner un élément qui appartient à un groupe, sans sélectionner le groupe entier. Ce que j'essaye de faire est un groupe d'éléments, qui peuvent être déplacés (tous les éléments sont déplacés ensemble) mais aucun d'eux ne peut être déplacé individuellement. Mais je veux aussi pouvoir sélectionner des éléments dans ce groupe et ensuite faire quelque chose avec eux, comme réordonner, supprimer, changer leur couleur, etc.Comment sélectionner un QGraphicsItem sans sélectionner le groupe entier (auquel cet élément appartient)

L'autre problème est, il peut y avoir un groupe de groupes. Je souhaite également être en mesure de sélectionner ces groupes dans le groupe parent. Je pensais que cela pourrait être un problème, car nous ne sommes pas en mesure de déterminer quel groupe les utilisateurs veulent sélectionner. A titre de démonstration, disons que nous avons une scène graphique composée des éléments suivants:

Groupe A qui contient le groupe B. Le groupe B contient 3 lignes. Si j'appuie deux fois sur le groupe A, je peux alors sélectionner le groupe B. Si j'appuie à nouveau deux fois sur B, je peux sélectionner des lignes dans le groupe B. Appuyer sur Echap fait double clic. Le problème est, je n'ai aucune idée de comment faire cela, parce que toute la sélection est acheminée aux parents, et que de nouveau à tous ses enfants.

Répondre

0

Vous ne pouvez pas utiliser QGraphicsItemGroup pour ce faire, car la sélection d'un élément dans un groupe sélectionne automatiquement tous les autres membres du groupe.

Je sous-classe QGraphicsItem pour créer une classe 'RootItem'. Cette classe contiendrait deux listes. L'une est une liste de QGraphicsItems ordinaires qui composent les éléments visuels du groupe lui-même, parent à cet RootItem. L'autre liste est d'autres RootItems parentés à celui-ci (par exemple, Groupe B).

Vous devez simplement vous assurer que vous avez soigneusement contrôlé quels éléments sont sélectionnables à un moment donné et comment les interactions se propagent entre les éléments.

Espérons que cela aide.