J'essaye de contraindre correctement le mouvement d'un QGraphicsItem
(spécifiquement QGraphicsRectItem
) sans changer le comportement natif pour fonctionner comme une barre de défilement sur l'axe X.Contraindre mouvement QGraphicsItem avec mouseMoveEvent
J'ai essayé de remplacer la fonction mouseMoveEvent
, mais j'ai ensuite besoin de réécrire le comportement du rectangle dans les directions X et Y. Au mieux, je peux obtenir le rectangle à accrocher à une seule position avec la souris. (Ici, le rectangle se cassera si la souris il tient au milieu):
void SegmentItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
setY(0);
setX(event->scenePos().x() - boundingRect().width()/2);
}
Je regarde itemChange
en ce moment, comme décrit here, mais il semble un peu trop compliqué et pas tout à fait élégante. EDIT: Cela devrait fonctionner, mais je ne peux pas le forcer à travailler. Y at-il un moyen de simplement contraindre le mouvement de l'axe Y?
(Je vais aussi avoir besoin de créer de fins de course pour la barre de défilement, mais plus tard.)
La solution itemChange liée est la solution, et aussi très élégante – Fabio
Cool, mais il ne semble rien limiter actuellement. J'ai lu _ "L'implémentation par défaut ne fait rien, et renvoie la valeur." _ Sur la [Page de référence de la classe] (http://doc.qt.io/qt-4.8/qgraphicsitem.html#itemChange) Savez-vous ce dont j'ai besoin? changer? –