Question

J'ai une matrice de ce QGraphicsItem dans une QGraphicsScene et quand je clique sur un élément, il le change de couleur. Ceci est mis en œuvre avec mousePressEvent(). Je veux être en mesure de cliquer et maintenez puis déplacez le curseur sur l'autre de QGraphicsItem et aussi changer leur couleur, donc déclencher leur mousePressEvent().

Le problème est qu'en raison de la souris saisir le premier élément que je clique sur « garde » tous les événements et hoverEnterEvent() n'est pas déclenché. J'ai essayé d'ajouter à ungrabMouse() mousePressEvent() mais cela n'a pas aidé.

Je suppose qu'une solution serait de faire glisser la mesure du QGraphicsItem et utiliser les fonctions de glisser-déposer QT pour cela. En fait, j'ai ceci:

void dragEnterEvent(QGraphicsSceneDragDropEvent *event)
{
    changeColor();
}

et quand je fais glisser un texte de l'application des éléments qu'il fonctionne comme je le veux, mais pas quand je « glisser » un QGrahphicsItem.

est la seule solution pour faire une dragable de QGraphicsItem pour pouvoir déclencher des événements tout en planant au-dessus d'eux avec un bouton de la souris cliquée?

Était-ce utile?

La solution 2

J'ai trouvé moi-même solution. J'ai ajouté mes QGraphicsRectItem à un de QGraphicsItemGroup et mis à exécution les événements de ce groupe. Dans le groupe :: mouseMoveEvent () Je vérifie la position du curseur et appliquer à ses enfants l'événement. Il ressemble à ceci:

void Group::mouseMoveEvent ( QGraphicsSceneMouseEvent * event )
{
    if (boundingRect().adjusted(0,0,-1,-1).contains(event->pos()))
    {
        if (CellCoordinate(event->pos()) != lastChangedCell_) {
            lastChangedCell_ = CellCoordinate(event->pos());
            modifyCell(CellCoordinate(event->pos()));
        }
    }
}

Si vous avez le même problème et avez besoin de plus d'informations ne hésitez pas à me contacter.

Autres conseils

Je vous recommande d'utiliser mouseMoveEvent().

Edit:. Le mouseMoveEvent() du QGraphicsView mère

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top