Publicité
+ Répondre à la discussion
Page 1 sur 2 12 DernièreDernière
Affichage des résultats 1 à 20 sur 34
  1. #1
    Membre habitué
    Inscrit en
    mars 2009
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : mars 2009
    Messages : 237
    Points : 101
    Points
    101

    Par défaut Afficher une valeur à partir du curseur

    Bonjour, j'ai une image affichée dans un QLabel et j'aimerai afficher dans un QLineEdit à chaque position où pointe le curseur de la souris les coordonnées et la valeur du pixel,c'est à dire afficher les positions x, y de la souris et la valeur du pixel correspondant.J'ai essayé ceci mais ça m'affiche rien!!
    Si quelqu'un la déjà fait ou a une idée je suis preneur.
    Merci d'avance.


    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    for (int y = 0; y < fxd.NbRows; y++)
                     for (int x = 0; x < fxd.NbColumns; x++)
                      {
     
                             //simple règle de trois
                             unsigned char  pixel = 255
                                     *
                                     (imageBuffer[y*fxd.NbColumns + x] - min)
                                     /
                                     (max - min);
                              pixel = abs(pixel - 255) ;
     
                             img.setPixel(x , y , qRgb( pixel , pixel, pixel ));
                       }
     
     
    Là je dois pouvoir les recuperer à chaque fois normalement.
     
                         cursor.setPos(x,y) ;
     
                          QLabel label ;            
                           ui->QLabel->cursor(x,y,pixel) ;
    Help please!

  2. #2
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro yan verdavaine
    Ingénieur expert
    Inscrit en
    mars 2004
    Messages
    9 966
    Détails du profil
    Informations personnelles :
    Nom : Homme yan verdavaine
    Âge : 32
    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 : 9 966
    Points : 13 630
    Points
    13 630

    Par défaut

    tu relie à chaque fois ton image
    Sérieux, commence par regarder les tuto. Tu y apprendra beaucoup de base.

    Sinon, regarde du côté des event d'un QWidget
    http://qt.developpez.com/doc/4.4/qwi...cted-functions
    Développeur Windows 8, Windows phone 8 et Nokia Asha, inscrivez vous sur DVLUP

  3. #3
    Membre habitué
    Inscrit en
    mars 2009
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : mars 2009
    Messages : 237
    Points : 101
    Points
    101

    Par défaut

    Bonjour, j'ai cherché et lu les tuto mais j'ai vraiment besoin de votre aide, car je vois plein de classe mais je sais pas laquelle utiliser entre QMouseEvent, QPoint, int x()const et int y()const pour pouvoir afficher les positions et la valeur du pixel pointée par le curseur!!! Si quelqu'un la deja fait j'ai besoin d'aide svp.
    Merci d'avance

  4. #4
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro yan verdavaine
    Ingénieur expert
    Inscrit en
    mars 2004
    Messages
    9 966
    Détails du profil
    Informations personnelles :
    Nom : Homme yan verdavaine
    Âge : 32
    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 : 9 966
    Points : 13 630
    Points
    13 630

    Par défaut

    Citation Envoyé par lisco Voir le message
    Bonjour, j'ai cherché et lu les tuto mais j'ai vraiment besoin de votre aide, car je vois plein de classe mais je sais pas laquelle utiliser entre QMouseEvent, QPoint, int x()const et int y()const pour pouvoir afficher les positions et la valeur du pixel pointée par le curseur!!! Si quelqu'un la deja fait j'ai besoin d'aide svp.
    Merci d'avance
    Il te faut réimplémenter les événement lié à la souris qui t'intéresse (cf lien qu je t'ai donné)
    void mouseDoubleClickEvent ( QMouseEvent * event )
    void mouseMoveEvent ( QMouseEvent * event )
    void mousePressEvent ( QMouseEvent * event )
    void mouseReleaseEvent ( QMouseEvent * event )
    void moveEvent ( QMoveEvent * event )
    Ces évènements te donneront la position x,y de ton curseur dans le repère widget. Tu n'as plus cas rechercher la valeur correspondante.

    Une autre façon de faire et d'installer un filtre d'évènement :
    http://qt.developpez.com/doc/latest/...alleventfilter
    Développeur Windows 8, Windows phone 8 et Nokia Asha, inscrivez vous sur DVLUP

  5. #5
    Membre habitué
    Inscrit en
    mars 2009
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : mars 2009
    Messages : 237
    Points : 101
    Points
    101

    Par défaut

    Bonjour, j'ai implementé ça, mais j'ai un soucis que je vois pas trop car j'ai je positionne mon curseur sur mon image je vois rien s'afficher dans le QLineEdit meme pas les pos en x et y du curseur dans le repere de l'image.
    Est ce ya un SLOT a integrer dans les mouvements du souris??ou un autre bogue??help please

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    void Maclass::mouseMoveEvent( QMouseEvent *ev )
    {
        if ( ev->buttons() == Qt::CustomCursor){
            QPoint position ;
            position = ev->pos() ;
           ui->lineEdit->pos() ;
     
    }
    Merci

  6. #6
    Rédacteur

    Inscrit en
    novembre 2006
    Messages
    1 271
    Détails du profil
    Informations forums :
    Inscription : novembre 2006
    Messages : 1 271
    Points : 1 615
    Points
    1 615

    Par défaut

    Je vois deja 2 problème dans ton code deja il manque une parenthese mais c'est peut etre un copier collé malheureux... De meme la fonction QLineEdit->Pos() retourne la position du widget QLineEdit et n'affiche en aucun cas le contenu des position X et Y. Utilise setText() pour afficher du texte.

  7. #7
    Membre habitué
    Inscrit en
    mars 2009
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : mars 2009
    Messages : 237
    Points : 101
    Points
    101

    Par défaut

    setText je pense que c'est pour afficher du text?mais moi je veux afficher la position du curseur.Donner moi un coup de pousse pour que je vois plus clair svp.j'en ai besoin

    Code :
    1
    2
    3
    4
    5
    6
    7
    {
        if ( ev->buttons() == Qt::CustomCursor){
            QPoint position ;
            position = ev->pos() ;
           ui->lineEdit->setText();
     
    }

  8. #8
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro yan verdavaine
    Ingénieur expert
    Inscrit en
    mars 2004
    Messages
    9 966
    Détails du profil
    Informations personnelles :
    Nom : Homme yan verdavaine
    Âge : 32
    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 : 9 966
    Points : 13 630
    Points
    13 630

    Par défaut

    sans compter que ev->buttons() retourn une composition des flags buttons
    http://qt.developpez.com/doc/latest/...usebutton-enum
    et que Qt::CustomCursor ne figure pas
    Développeur Windows 8, Windows phone 8 et Nokia Asha, inscrivez vous sur DVLUP

  9. #9
    Membre habitué
    Inscrit en
    mars 2009
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : mars 2009
    Messages : 237
    Points : 101
    Points
    101

    Par défaut

    Si quelqu'un a la reponse j'en ai besoin ça fait 3 jours que suis dessus

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    void maclass::mouseMoveEvent(QMouseEvent *event)
    {
        QPoint MousePosition ;
     
        int dx = event->x() ; //Cordonnée en x
        int dy = event->y() ; //Cordonnée en y
        if(event->MouseMove & Qt::MoveAction) //On relie event aux deplacements du curseur de la souris
        {
            MousePosition = event->pos() ;//On stocke la position à chaque deplacement dans une variable.
            QToolTip::showText(MousePosition,"Mouse Position", this) ;
     
     
        }
     
    }
    Je recupere les coordonnées du curseur en x et en y et ensuite la valeur correspondante en pos, j'utilise QToolTip pour affficher
    les valeurs trouvées.Mais mon souhait est de les affficher dans une zone dans mon ihm comme dans un QLabel ou un QLineEdit
    Si pouvez m'aider à resoudre mon probleme svp. Merci

  10. #10
    Membre confirmé Avatar de cayou66
    Inscrit en
    décembre 2008
    Messages
    286
    Détails du profil
    Informations personnelles :
    Âge : 27

    Informations forums :
    Inscription : décembre 2008
    Messages : 286
    Points : 261
    Points
    261

    Par défaut

    Et bien, si tu es sûr de récupérer la position, tu n'a qu'à envoyer un signal à ce moment là, avec un QPoint en paramètre.

    Une autre classe, celle qui s'occupe de faire des QTextEdit, ou des QLCDNumber par exemple, récupère le signal, et lance son slot pour afficher les valeurs.

    Dans maclass:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    //Header:
     
    signals:
        void moveEventOnMaClasse(QPoint p);
     
    //Source:
    void maclass::mouseMoveEvent(QMouseEvent *event)
    {
    ...
    ...
    emit moveEventOnMaClasse(event->pos());
    ...
    ...
    }
    Et dans ta classe qui affiche les QTextEdit:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    // Header:
     
    public slots:
        void displayPos(QPoint p);
     
    // Source:
     
    maMainWindow::maMainWindow()
    {
    ...
    maclass*m = new maclass;
    connect(m, SIGNAL(moveEventOnMaClasse(QPoint)), this, SLOT(displayPos(QPoint)));
    ...
    }
     
    maMainWindow::displayPos(QPoint p)
    {
        // Et là tu fais ce que tu veux avec ta position.
    }

  11. #11
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro yan verdavaine
    Ingénieur expert
    Inscrit en
    mars 2004
    Messages
    9 966
    Détails du profil
    Informations personnelles :
    Nom : Homme yan verdavaine
    Âge : 32
    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 : 9 966
    Points : 13 630
    Points
    13 630

    Par défaut

    Sinon, avec un filtre sur les event, cela t'évitera de redefinir mouseMoveEvent(QMouseEvent *event)
    http://qt.developpez.com/doc/latest/...t/#eventfilter
    Développeur Windows 8, Windows phone 8 et Nokia Asha, inscrivez vous sur DVLUP

  12. #12
    Membre habitué
    Inscrit en
    mars 2009
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : mars 2009
    Messages : 237
    Points : 101
    Points
    101

    Par défaut

    Bonjour, voici où j'en suis , finalement je pense que c'est lui interessant de pouvoir afficher la valeur du pixel pointé en cliquant sur un point et de faire apparaitre la valeur dans un rectangle sur le bout du curseur.
    Mon probleme est que X ,Y et Pixel sont dans un QString donc je sais pas comment recuperer les valeurs???

    Aider moi svp

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    void maClass::mousePressEvent(QMouseEvent *event) //Quand on click sur le bouton droit du curseur.
     {
        QPoint lastPoint ;
     
        int x, y ;
         if (event->button() == Qt::LeftButton) {
             lastPoint = event->pos() ;
     
     
             QToolTip::showText(lastPoint, "X = , Y =, Pixel=  ", this) ;
    Yan pour la methode Event Filter j'ai lu la doc mais j'ai du mal a la comprendre.
    Si ya d'autres methodes aussi je suis preneur.
    Merci d'avance

  13. #13
    Rédacteur

    Inscrit en
    novembre 2006
    Messages
    1 271
    Détails du profil
    Informations forums :
    Inscription : novembre 2006
    Messages : 1 271
    Points : 1 615
    Points
    1 615

    Par défaut

    J'ai pas bien compris ton problème de QString ? puex tu mieux expliquer ?

    Sinon dans la FAQ tu devrais trouvez tout ce que tu a besoins pour soit convertir une QString en type numerique et vise versa.

  14. #14
    Membre habitué
    Inscrit en
    mars 2009
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : mars 2009
    Messages : 237
    Points : 101
    Points
    101

    Par défaut

    Citation Envoyé par superjaja Voir le message
    J'ai pas bien compris ton problème de QString ? puex tu mieux expliquer ?
    .
    En fait ce que je veux dire c'est quand je clique sur le bouton droit de la souris il m'affiche ça: "X = , Y =, Pixel= " alors que c'est un QString, et je sais pas comment recuperer les positions de ma souris dans un QString.
    J'ai besoin d'explication comment recuperer les positions de ma souris uniquement dans le repere de mon image.
    Merci d'avance.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    void maClass::mousePressEvent(QMouseEvent *event) //Quand on click sur le bouton droit du curseur.
     {
        QPoint lastPoint ;
     
        int x, y ;
         if (event->button() == Qt::LeftButton) {
             lastPoint = event->pos() ;
     
     
             QToolTip::showText(lastPoint, "X = , Y =, Pixel=  ", this) ;

  15. #15
    Rédacteur

    Inscrit en
    novembre 2006
    Messages
    1 271
    Détails du profil
    Informations forums :
    Inscription : novembre 2006
    Messages : 1 271
    Points : 1 615
    Points
    1 615

    Par défaut

    Ta structure lastPoint te permet de recuperer le point pointer par le curseur de ta souris. Apres je sais pas dans qu'elle repere sont ces point mais si c'est dans celui de ton image c'est facile et si c'est dans celui du widget parent c'est pas super compliqué il y a juste d'une translation a faire pour changer de repere.

    Pour ce qui est du formatage de ta QString tu as tout dans la faq avec meme plusieur methode pour le faire (arg(), sprintf()...).

  16. #16
    Membre habitué
    Inscrit en
    mars 2009
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : mars 2009
    Messages : 237
    Points : 101
    Points
    101

    Par défaut

    Citation Envoyé par superjaja Voir le message
    Ta structure lastPoint te permet de recuperer le point pointer par le curseur de ta souris. Apres je sais pas dans qu'elle repere sont ces point mais si c'est dans celui de ton image c'est facile et si c'est dans celui du widget parent c'est pas super compliqué il y a juste d'une translation a faire pour changer de repere.

    Pour ce qui est du formatage de ta QString tu as tout dans la faq avec meme plusieur methode pour le faire (arg(), sprintf()...).
    ça parait facile mais je vois pas trop comment faire.Effectivement mon repere est celui de l'image.Et tu m'as parlé de structure , je vois pas trop. Si vous pouvez me debloquer à partir de ce bout de code à recuperer les coord x et y de la souris et la valeur pointer par la souris:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void maClass::mousePressEvent(QMouseEvent *event) //Quand on click sur le bouton droit du curseur.
     {
        QPoint lastPoint ;
     
        int x, y ;
         if (event->button() == Qt::LeftButton) {
             lastPoint = event->pos();
     
             QToolTip::showText(lastPoint, "X = , Y = , Value = ", this) ;
    }
    }

  17. #17
    Rédacteur

    Inscrit en
    novembre 2006
    Messages
    1 271
    Détails du profil
    Informations forums :
    Inscription : novembre 2006
    Messages : 1 271
    Points : 1 615
    Points
    1 615

    Par défaut

    Avec lastPoint tu recuperes X et Y voir la doc ici.

    Code :
    1
    2
    QString str = "X=%1 Y=%2";
    str.arg(lastPoint.x).arg(lastPoint.y);
    Suivant dans quel repere sont donné X et Y un a un changement de repere peut etre necessaire.

    Pour l'affichagfe X et Y sont des int donc il faudra que tu formates ta chaine pour convertir les int en QString (cf FAQ et plus haut).

  18. #18
    Membre habitué
    Inscrit en
    mars 2009
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : mars 2009
    Messages : 237
    Points : 101
    Points
    101

    Par défaut

    J'ai mis un MessagaBox pour pouvoir afficher ce que je retourne comme valeur mais apparemnt c'est nul partout.Et je sais pas coment introduire le repere de mon image .Je croyais que l'evenement le gerer tout seul?Si vous pouvez m'expliquer c'est urgent pour moi je dois trouver la solution;
    Je pensais à definir le repere de mon image en faisant:
    while(x < Nblignes && y < Nbcolonnes) ??? mais je pense pas que ca soit une bonne idee.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    QPoint lastPoint ;
     
         if (event->button() == Qt::LeftButton)
        {
             lastPoint.setX(lastPoint.x()) ;
             lastPoint.setY(lastPoint.y()) ;
             QString str = "X=%1 Y=%2";
             //str = str.sprintf("X%d" , lastPoint.x() ).sprintf("Y%d", lastPoint.y());
             QMessageBox::information(this, tr("Image Viewer"), tr("the position x of the pixelis%1.").arg(lastPoint.x()) ) ;
         }
    Merci d'avance

  19. #19
    Rédacteur

    Inscrit en
    novembre 2006
    Messages
    1 271
    Détails du profil
    Informations forums :
    Inscription : novembre 2006
    Messages : 1 271
    Points : 1 615
    Points
    1 615

    Par défaut

    Normal pour que tu trouve null. Tu initialises pas lastPoint. Tu etais sur la bonne voie.
    Utilises ce que tu avais fait:

    Code :
    QPoint lastPoint = event->pos();
    Apes tu formates ta chaine.

  20. #20
    Membre habitué
    Inscrit en
    mars 2009
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : mars 2009
    Messages : 237
    Points : 101
    Points
    101

    Par défaut

    Finalement j'ai trouvé plus facile, mais mon probleme est que je sais pas comment definir le repere de l'image affichée???Car là je pense qu''il me donne les coordonnées dans le repere de l'ihm!

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    void maClass::mousePressEvent(QMouseEvent *event) //Quand on click sur le bouton droit du curseur.
     {
     
     
         if (event->button() == Qt::LeftButton)
        {
             QMessageBox::information(this, tr("Image Viewer"), tr("the position x of the pixelis%1.").arg(event->x()), tr("the position y of the pixelis%1.").arg(event->y()) ) ;
         }
    Je voudrais les coord dans le repere de l'image!!Expliquer moi please, coment definir les limites de ce repere

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •