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

Discussion :

Position de la QGraphicsView dans une QGraphicsScene

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 4
    Par défaut Position de la QGraphicsView dans une QGraphicsScene
    Bonjour à tous,

    Je m'essaye actuellement à la programmation en c++ d'une petite application via Qt.
    Et, pour la première fois je bloque sur un problème sans en trouver la solution.

    En fait j'ai un QGraphicsview qui mesure 200*200
    dedans j'affiche un QGraphicsScene de 400*400
    j'utilise l'option ScrollHandDrag

    -> je vois donc en permanence une zone de 200*200 et je peux me déplacer pour parcourir au total la zone de 400*400 de ma QGraphicsScene.

    Mon problème est de connaitre la position (coin sup gauche, centre ou autre...) qui est effectivement affiché par le QGraphicsview
    Par ex j'aimerais savoir que j'affiche une zone de 200*200 (ça je le sais déjà)
    dont le coin sup gauche est en x=12,y=59 (nombre au pif à déterminer) de ma QGraphicsScene.

    Merci pour votre aide

  2. #2
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 4
    Par défaut
    Merci pour cette première réponse ultra rapide, mais
    je viens de faire un essai et visiblement ça ne fonctionne pas

    voici un petit bout de code pour la compréhension:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    dessin= new QGraphicsScene(ui->GV);
    dessin->setSceneRect(QRectF(-200,-200,401,401));
    ui->GV->setScene(dessin);
     
    ui->doubleSpinBox_2->setValue(ui->GV->sceneRect().topLeft().x());
    ui->doubleSpinBox_3->setValue(ui->GV->sceneRect().topLeft().y());

    j'utilise Qt
    ma QGraphicsView s'appelle GV (elle mesure 200*200)
    dessin est ma QGraphicsScene qui mesure donc 401*401
    j'ai utilisé 2 doublespinbox pour afficher les coordonnées souhaitées
    au terme de cet essai doubleSpinBox_2 affiche -200
    et doubleSpinBox_3 pareil
    or lors de l'execution du code, mon affichage est bien centree en (0,0) (je le sais car j'ai affiché un rectangle autour de ce point)
    je devrais donc obtenir -100 (ou -99) et non pas -200

    des idées?

  4. #4
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par Jeff504 Voir le message
    des idées?
    En générale pour ce genre de fonction, il faut attendre le premier affichage (paint) pour qu'il retourne quelque chose de correcte.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 4
    Par défaut
    Je viens de tenter avec un paint en plus->meme résultat

    en suivant ton lien on peut lire:
    "The scene rectangle defines the extent of the scene, and in the view's case, this means the area of the scene that you can navigate using the scroll bars."

    Ce qui si je comprends bien signifie que la fonction retourne un QRectF représentant l'aire complete de ma QGraphicsScene.

    en fait il me faudrait la meme chose mais qui se limiterait a la partie visible/affichée.

  6. #6
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    oups. J'ai lue trop vite. dsl.
    Peut être avec
    http://qt.developpez.com/doc/latest/...ew/#maptoscene
    et utilisant le point(0,0)

  7. #7
    Membre expérimenté

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2006
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 281
    Par défaut
    Commençons par la solution :
    Il faut récupérer les valeurs scrollbar pour connaitre la position du coin supérieur gauche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    GV-> horizontalScrollBar()->value();
    GV-> verticalScrollBar()->value();
    Un mapToScene ou quelque chose dans le genre donnera la position dans la scene.

    Ensuite un merci :
    Parce que jusqu'à présent j'avais implémenté à la main le fonctionnement fourni par "ScrollHandDrag". Un gros nettoyage de code en perspective!

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 4
    Par défaut
    Citation Envoyé par LeGars Voir le message
    Commençons par la solution :
    Il faut récupérer les valeurs scrollbar pour connaitre la position du coin supérieur gauche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    GV-> horizontalScrollBar()->value();
    GV-> verticalScrollBar()->value();
    super c'est exactement ce qu'il me fallait

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

Discussions similaires

  1. Position de la souris dans une form
    Par planetevoyage dans le forum Delphi
    Réponses: 3
    Dernier message: 12/10/2006, 10h39
  2. position d'un élément dans une liste
    Par john491 dans le forum Général Python
    Réponses: 8
    Dernier message: 05/05/2006, 13h13
  3. Position de chaque ligne dans une table
    Par steelidol dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 16/02/2006, 14h34
  4. Position d'un enregistrement dans une table ou requête Query
    Par polinevol dans le forum Bases de données
    Réponses: 3
    Dernier message: 21/01/2006, 03h53
  5. Position d'un enregistrement dans une table
    Par polinevol dans le forum Bases de données
    Réponses: 1
    Dernier message: 16/01/2006, 09h10

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