IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Qt Discussion :

un prb sur "scale"-QGraphicsItem coord change


Sujet :

Qt

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 91
    Points : 47
    Points
    47
    Par défaut un prb sur "scale"-QGraphicsItem coord change
    Bj,
    J'ai fait item->scale(2,2) item est un objet de QGraphicsItem et j'ai output les coordonées de cet item sur le scene avant et après le scale, ça change....
    x de item décroît 1 chaque fois on fait le scale.
    Je comprends pas pk qq a une idée d'ou vienne ce décroissance?

    voilà les codes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    void AreaScene::mouseMoveEvent(QGraphicsSceneMouseEvent *mouseEvent)
    {
        if(this->selectedItems().isEmpty())
            return ;
        QGraphicsItem *item = this->selectedItems().first();
        if (mode == ScaleItem) {
            item->scale(2,2);
        }
        QGraphicsScene::mouseMoveEvent(mouseEvent);
    }

  2. #2
    Membre actif Avatar de cayou66
    Inscrit en
    Décembre 2008
    Messages
    286
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Décembre 2008
    Messages : 286
    Points : 273
    Points
    273
    Par défaut
    Citation Envoyé par lansher1985 Voir le message
    Bj,
    j'ai output les coordonées de cet item sur le scene avant et après le scale, ça change....
    Salut,
    tu fais comment exactement pour "output" les coordonnées de ton item "sur la scène" ?

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 91
    Points : 47
    Points
    47
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
        ofstream myfile;
        myfile.open("scalemove.txt",ios::app);
     
        if(this->selectedItems().isEmpty())
            return ;
     
        if (mode == ScaleItem) {
            myfile << "item après scale: (" << item->scenePos().x() << "," << item->scenePos().y() << ")" << endl;
     
            item->scale(2,2);
     
            myfile << "item après scale: (" << item->scenePos().x() << "," << item->scenePos().y() << ")" << endl;
         }
         myfile.close();
    Voilà mais je pense pas ça vien de le output le prb..

  4. #4
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 91
    Points : 47
    Points
    47
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    item avant scale: (249,248)
    item après scale: (249,248)
    item avant scale: (247,248)
    item après scale: (247,248)
    item avant scale: (246,248)
    item après scale: (246,248)
    item avant scale: (245,248)
    item après scale: (245,248)
    item avant scale: (244,248)
    item après scale: (244,248)
    item avant scale: (243,247)
    item après scale: (243,247)
    voilà le "output"

  5. #5
    Membre actif Avatar de cayou66
    Inscrit en
    Décembre 2008
    Messages
    286
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Décembre 2008
    Messages : 286
    Points : 273
    Points
    273
    Par défaut
    Deux questions alors:
    - Si tu fais ça pendant un certain moment, la valeur atteint 0? Passe en dessous?

    - As-tu essayé de récupérer d'autres coordonnées? Du genre item->pos().x() ?
    Car là tu récupère ceux passés par la moulinette mapToScene. Si oui, quelles sont les valeurs?

    Ah, et une dernière, ton scale fonctionne-t-il (Car je vois qu'il est dans un mouseMoveEvent....)?

  6. #6
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 91
    Points : 47
    Points
    47
    Par défaut
    je sais..
    le "output" change régulièrement -1 => il scale et en meme temp il move..

    c'est parce que j'ai fait "QGraphicsScene::mouseMoveEvent(mouseEvent);" dans cette "if", j'aurais du le mettre dans un "else" sinon ça change le coord de item ...

    Merci qd même cayou66

  7. #7
    Membre actif Avatar de cayou66
    Inscrit en
    Décembre 2008
    Messages
    286
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Décembre 2008
    Messages : 286
    Points : 273
    Points
    273
    Par défaut
    Tu n'as pas répondu à mes questions. C'est surtout la seconde qui m'intéresse:
    remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    myfile << "item après scale: (" << item->scenePos().x() << "," << item->scenePos().y() << ")" << endl;
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    myfile << "item après scale: (" << item->pos().x() << "," << item->pos().y() << ")" << endl;
    Et dis mois ce que tu obtiens. Et aussi, est-ce que ça marche?? Et j'ai bien vu le "if mode".

  8. #8
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 91
    Points : 47
    Points
    47
    Par défaut
    c'est pareil dans ce cas là
    parce que :
    item->scenePos().x() retourne coord dans le scene;
    item->pos().x() retourne coord dans le système de son parent;
    dans mon cas item->parent == scene
    donc c'est pareil

  9. #9
    Membre actif Avatar de cayou66
    Inscrit en
    Décembre 2008
    Messages
    286
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Décembre 2008
    Messages : 286
    Points : 273
    Points
    273
    Par défaut
    QGraphicsItem::scenePos () const

    Returns the item's position in scene coordinates. This is equivalent to calling mapToScene(0, 0).
    Ce qui veut bien dire que item->pos() ne fait pas la même chose que item->mapToscene(0,0), si?

    Et si je me trompe, essayes alors item->mapToScene(item->pos()).x().

  10. #10
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 91
    Points : 47
    Points
    47
    Par défaut
    Ce qui veut bien dire que item->pos() ne fait pas la même chose que item->mapToscene(0,0), si?
    dans ce cas là oui
    ça change quand le parent de item n'est pas le scene.

  11. #11
    Membre actif Avatar de cayou66
    Inscrit en
    Décembre 2008
    Messages
    286
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Décembre 2008
    Messages : 286
    Points : 273
    Points
    273
    Par défaut
    Alors, ces valeurs? ...

  12. #12
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 91
    Points : 47
    Points
    47
    Par défaut
    pareil comme je t'ai dit.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    item 0x3fbe30
    item->Pos : (242,235)
    item->mapToscene(0,0) : (242,235)
    item->ScenePos : (242,235)
    item 0x3fbe30
    item->Pos : (242,235)
    item->mapToscene(0,0) : (242,235)
    item->ScenePos : (242,235)
    item 0x3fbe30
    item->Pos : (242,235)
    item->mapToscene(0,0) : (242,235)
    item->ScenePos : (242,235)
    item 0x3fbe30
    item->Pos : (242,235)
    item->mapToscene(0,0) : (242,235)
    item->ScenePos : (242,235)
    item 0x3fbe30
    item->Pos : (242,235)
    item->mapToscene(0,0) : (242,235)
    item->ScenePos : (242,235)
    item 0x3fbe30
    item->Pos : (242,235)
    item->mapToscene(0,0) : (242,235)
    item->ScenePos : (242,235)

  13. #13
    Membre actif Avatar de cayou66
    Inscrit en
    Décembre 2008
    Messages
    286
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Décembre 2008
    Messages : 286
    Points : 273
    Points
    273
    Par défaut
    Bah ça m'a l'air d'être bon là les valeurs non?
    Lis bien ce que je t'écris:
    Citation Envoyé par me
    Et si je me trompe, essayes alors item->mapToScene(item->pos()).x().
    Je t'avais demandé de faire item->mapToScene(item->pos()).x(), et pas item->mapToScene(0,0).x(). Là, tu aurais eu un résultat différent.

    Mais peut importe

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Quote] DVP quoté sur Bashfr
    Par Skyounet dans le forum La taverne du Club : Humour et divers
    Réponses: 16
    Dernier message: 26/09/2006, 18h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo