Je fais un projet de mélange d'images en utilisant QGraphics Scene. Donc, je place les images dans le QGraphicsscene comme QgraphicspixmapItem. Mais le problème est que lorsque je déplace l'itm (en faisant glisser la souris), la vue QGraphics est automatiquement agrandie. Je veux contraindre cette action. Quelqu'un peut-il m'aider dans ce domaine?QT-Graphics - Comment contraindre le mouvement de l'article
Répondre
Enfin, j'utilise le signal QGraphicsScene-> (cnanged).
J'ai combiné cela avec une fonction appropriée qui vérifie la position de l'élément sélectionné et le maintient dans la zone donnée.
Un échantillon de code minimal peut être utile. Avez-vous spécifié un sceneRect? Notez cette question:
QGraphicsView scrolling and image scaling/cropping
... et this thread on QtCentre:
Q: Les limites "dur"? En d'autres termes: Que se passe-t-il si crée un QGraphicsScene avec QGraphicsScene (0, 0, 500, 500) et que l'on essaye ensuite de mettre un item à la position (-50, -50)? R: Non, le cadre est assez flexible. En fait, si vous ne spécifiez pas une scène, elle augmentera au fur et à mesure que vous ajouterez des éléments pour englober tous.
Je suppose que vous aurez à sous-classe QGraphicsPixmapItem
pour re-mettre en œuvre la méthode QGraphicsItem::itemChange().
Jetez un oeil à the help page regarding this function: il est un exemple qui montre exactement ce que vous essayez de faire:
QVariant Component::itemChange(GraphicsItemChange change, const QVariant &value)
{
if (change == ItemPositionChange && scene()) {
// value is the new position.
QPointF newPos = value.toPointF();
QRectF rect = scene()->sceneRect();
if (!rect.contains(newPos)) {
// Keep the item inside the scene rect.
newPos.setX(qMin(rect.right(), qMax(newPos.x(), rect.left())));
newPos.setY(qMin(rect.bottom(), qMax(newPos.y(), rect.top())));
return newPos;
}
}
return QGraphicsItem::itemChange(change, value);
}
Y at-il un moyen d'obtenir cela directement, plutôt que de dériver une classe – prabhakaran
@prabhakaran: Je ne l'ai jamais fait (et je suppose que ce n'est pas très efficace et propre) mais peut-être que vous pourriez gérer ça le niveau de la scène: si la scène change, elle émet un signal. Vous pouvez ensuite vérifier la position de l'élément actuel et l'adapter si nécessaire avec 'QGraphicsItem :: setPos()' –
- 1. Comment contraindre swf chargé?
- 2. Comment contraindre plusieurs types génériques?
- 3. comment contraindre le nombre de clients qu'un TcpListener peut accepter?
- 4. Comment traduire le mouvement sur le Canvas3D en mouvement dans le monde 3D virtuel
- 5. Comment contraindre le Silverpixer Silverlight sans une propriété MaxLength?
- 6. Saisir le mouvement de la souris
- 7. branches de mouvement dans le système d'équipe
- 8. Silverlight - Empêcher le mouvement ChildWindow
- 9. Mouvement de navigation MapView?
- 10. Problème de mouvement ListView
- 11. Comment contraindre l'angle de vitesse linéaire de b2Bodys
- 12. comment gmail détecte-t-il le mouvement de la souris?
- 13. Comment activer le mouvement de balayage pour un UITextView
- 14. comment contrôler le mouvement du curseur de datagridview en C#
- 15. Comment reconnaître le mouvement de balayage dans UIScrollView
- 16. C# bloquer le mouvement de la souris
- 17. contentoffset pendant le mouvement de flick
- 18. Comment retarder mon mouvement d'IA
- 19. UIImageView "Mouvement des Sprites" Comment?
- 20. Comment suivre un mouvement rotatif
- 21. Comment contraindre un paramètre de type par un autre
- 22. Déplacer le mouvement de la souris dans le carbone
- 23. Contraindre le dessin d'une ligne à 45 degrés des angles
- 24. Mouvement UIView
- 25. Cocoa Touch - détection de mouvement?
- 26. Schéma XML: Contraindre le nombre d'occurrences à être cohérent
- 27. jQuery: Comment faire pour arrêter le mouvement du ticker
- 28. comment montrer le caractère en mouvement dans ma forme vb
- 29. Détecter le mouvement sur l'axe en android
- 30. Problème avec le Picturebox en mouvement
Encore le problème persiste, même après avoir ajouté le sceneRect. – prabhakaran
Merci! Au moins cela m'a aidé :) – AkiRoss