Bienvenue sur le forum !

Si vous souhaitez rejoindre la communauté, cliquez sur l'un de ces boutons !

Qt 5 : 5.9.1 - Qt Creator : 4.4.0 - Qt Installer : 2.0.3 - JOM : 1.1.2 - Qt Build suite : 1.7.0 - VS Qt 5 : 2.0.0

QGraphicsView - selectionner les items à zoomer

Bonjour!

Je réalise une vue avec des items représentant des objets réels, avec des dimensions et un rapport pixel/mètre pour que tout soit à l'échelle.
Il existe également un outil "règle" qui permet de prendre des mesures (en mètres) entre 2 points: il s'agit de 2 cercles reliés par une ligne droite, et la distance entre les 2 centres des cercles s'affiche dans l'un des cercles.
Tout ceci fonctionne.

Parfois, la scène représentée peut être relativement grande (jusqu'à une quinzaine de m²) mais les mesures, elles, peuvent être très petites (quelques cm).

J'aimerais donc que l'utilisateur puisse placer ses mesures où bon lui semble avec des zooms/dezooms, mais je souhaite que la mesure soit toujours lisible, c'est à dire que les cercles et le texte restent à la même taille peu importe le niveau de zoom. Ainsi, même sur une vue d'ensemble, l'utilisateur distingue ses plus petites mesures.
Dite moi si ce n'est pas clair.

Ma question, c'est comment faire pour ne zoomer que sur certains éléments de la vue, tout en conservant une bonne échelle pour les éléments non zoomable.
Actuellement j'utilise QGraphicsView::scale(), mais je n'ai aucune idée de comment m'y prendre pour différencier le fonctionnement des items...

Merci d'avance!

Arnaud

Réponses

  • Salut
    Sur mon mobile donc difficile de répondre avec précision
    Mais regarde de côté d'une enum ou méthode avec ignoreTransform dans la classe QGraphicsItem
  • December 2016 modifié
    Pour completer la réponse de babaOroms.
    Tu peux définir le flag: QGraphicsItem::ItemIgnoresTransformations dans ton item regle.

    Cela marchera si tu gères ton zoom par la scene et non par la vue.
  • @obiwankennedy
    Cela marchera si tu gères ton zoom par la scene et non par la vue.
    Qu'est-ce que ça veut dire? Le zoom n'est pas uniquement géré par QGraphicsView? Je ne trouve rien dans la doc de QGraphicsScene qui ressemble à un zoom...?

    En tout cas avec le flag ItemIgnoresTransformations, mon item Regle n'est effectivement plus modifié mais avec le zoom issu de la QGraphicsView, les mesures sont complètement fausses.
  • Hello,

    Lorsque j'utilisais les QGraphicsXXXX ("à l'époque" de Qt 4.8 ;-) ), je gérais le zoom "à la mano" dans chaque item, parce que le zoom de la vue agrandissait tout, même les traits dessinés par les items : un trait d'un px devenait bien trop épais avec un zoom important...
    Peut-être une piste à suivre.
Connectez-vous ou Inscrivez-vous pour répondre.