Publicité
+ Répondre à la discussion
Page 2 sur 2 PremièrePremière 12
Affichage des résultats 21 à 34 sur 34
  1. #21
    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

    Je pensais que mon message en page 1 était clair, j'ai dû me tromper alors...
    En ce qui concerne quel ou quel autre repère est utilisé, ce sera celui dans le lequel tu redéfini ta/tes méthode(s) de mouseEvent, tout simplement.
    Si vraiment tu voulais récupérer les valeurs x,y, et les afficher dans un widget quelconque, ma solution fonctionnait.

    Edit: tu veux vraiment garder une QMessageBox à la fin???

  2. #22
    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 cayou66 Voir le message
    Je pensais que mon message en page 1 était clair, j'ai dû me tromper alors...
    En ce qui concerne quel ou quel autre repère est utilisé, ce sera celui dans le lequel tu redéfini ta/tes méthode(s) de mouseEvent, tout simplement.
    Si vraiment tu voulais récupérer les valeurs x,y, et les afficher dans un widget quelconque, ma solution fonctionnait.

    Edit: tu veux vraiment garder une QMessageBox à la fin???
    Si tu veux j'ai essayé cette methode mais ça marche pas chez moi.J'ai deja une classe principale dans mon projet donc je veux juste une methode pour l'implementer dans mon projet.
    Mon but c'est pas de garder le QMessageBox mais de l'affiche dans un QListEdit ou au mieux de l'afficher au curseur quand je clique avec la souris.Pour le moment le QMessageBox est le plus facile que j'ai compris pour l'instant.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    void maclass::mousePressEvent(QMouseEvent *event) //Quand on click sur le bouton droit du curseur.
     {
            QPoint lastPoint ;
          //   std::cout << "Un clic a été fait à la position (" << event->x() << " , " << event->y() << " ) " << std::endl;
     
     
     
         if (event->button() == Qt::LeftButton)
        {
           //  QPoint lastPoint = event->pos();
            /* 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(event->x()), tr("the position y of the pixelis%1.").arg(event->y()) ) ;
         }
    Voici tout ce que j'ai essayé sans trop comprendre où je vais !!!Les guars j'ai besoin une explication :
    > comment definir le repere de mon image
    >comment faire apparaitre les coordonnées et les valeurs de mes pixels
    J'ai lu la FAQ et les tutoriels et j'ai besoin de votre aide.Je dois cloturer ce chapitre avant de me coucher svp help

  3. #23
    Rédacteur

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

    Par défaut

    Je sais pas si c'est la meilleur solution mais tu peux recuperer des coordonnée dans different repere avec ces methode ici. Apres tu peut aussi le faire toi meme en recuperant la position de ton label qui de sert de display dans ta dialogue et apres a partir de la tu sais si ta souris est sur ton widget et a quel endroit elle se trouve.

  4. #24
    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

    maClass est quel partie de ton ihm?
    Développeur Windows 8, Windows phone 8 et Nokia Asha, inscrivez vous sur DVLUP

  5. #25
    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 yan Voir le message
    maClass est quel partie de ton ihm?
    Ben c'est le seul QWidget de mon ihm donc je pense qu'elle represente toute l'ihm.

  6. #26
    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
    Ben c'est le seul QWidget de mon ihm donc je pense qu'elle represente toute l'ihm.
    Elle dérive de QLabel?
    ou le QLabel est dedans?
    tu pourrais montrer ton code?
    Développeur Windows 8, Windows phone 8 et Nokia Asha, inscrivez vous sur DVLUP

  7. #27
    Membre émérite
    Avatar de Shugo78
    Profil pro
    Inscrit en
    mars 2007
    Messages
    1 114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2007
    Messages : 1 114
    Points : 963
    Points
    963

    Par défaut

    > comment definir le repere de mon image
    Les position retournée par les fonction menbre de QMouseEvent telles que x (), y (), pos () sont relatives au widget qui a recu l'événement MouseEvent. Idéalement il te faudrait créer une classe dérivant de QLabel et y ajouter un slot connecté a MouseEvent de manière a récupérer les positions relatives a ce widget. Ou alors par calcul, en tenant compte de la position de ton image, de la taille de ton image, de ta fenêtre et de la position globale du curseur en déduire la position du curseur relative a ton image.

    > comment faire apparaitre les coordonnées et les valeurs de mes pixels
    Le code donné précédemment te permet d'obtenir un QString contenant les informations de positions que tu peux ensuite utiliser selon tes besoins daffichage.
    Le savoir est un droit universel, libérez le code source
    Mon site
    Aidez nous à militer pour l'adoption d'un nouveau smiley
    "C'est en s'attardant en bas que l'on monte plus haut "
    "Un home qui veut faire de grande chose doit vivre comme s'il ne devait jamais mourrir !"
    attention je mords
    Bye

  8. #28
    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, je vous montre mon code comme vous me l'avez demander :


    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    DManual2::DManual2(QWidget *parent)
        : QMainWindow(parent), ui(new Ui::DManual2Class)
    {
     
     
        ui->setupUi(this);
     
        connect(ui->BoutonOpenImage, SIGNAL(triggered()), this, SLOT(LoadImage())) ;
     
     
    }
    sachant que mon image est affiché dans un QScrollArea:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
     
    void DManual2::mouseMoveEvent(QMouseEvent *event)
     
    {
      int posExactX ;
      int posExactY ;
      int posInitialeX = 629 ;
      int posInitialeY = 159 ;
      int lPositionX = event->x() - posInitialeX ;//ça me permet de reperer la premiere ligne de l'image
      int lPositionY = event->y() - posInitialeY ;//Permet de reperer la premeire colonne de l'image.
    for(int l = 0; l < fxd.NbRows; ++l)//fxd.NbRows nombre de ligne de l'image
      {
          for(int k = 0; k < fxd.NbColumns; ++k)//fxd.NbColumns nombre de colonne de l'image
          {
            posExactX = lPositionX + l   ;
            posExactY = lPositionY + k ;
     
    ui->scrollArea_2->hasMouseTracking() ;//Mon image s'affiche dans un scrollArea j'ai essayé de relier l'objet aux deplacement du curseur mais ??
     
    // QWidget::mouseMoveEvent(event);
     
      ui->ZoneMouse->setText(QString("X = %1  Y = %2  Pixel = %3").arg( posExactX).arg(posExactY).arg(0)) ;
    }
     
        }
    j'ai essayé de faire une boucle suivant les lignes et les colonnes de l'image pour que quand le curseur sort de l'image rien ne s'affichera dans ce cas.et aussi pour pouvoir incrementer les deplacement du curseur.Les resultats que je trouve sont faux et que je detecte des valeurs a tous les endroit meme en dehors de l'image, ce qui n'est pas bon
    help please

  9. #29
    Membre émérite
    Avatar de Shugo78
    Profil pro
    Inscrit en
    mars 2007
    Messages
    1 114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2007
    Messages : 1 114
    Points : 963
    Points
    963

    Par défaut

    Ce n'est pas la méthode que j'emploierais, mais si tu veux continuer dans la même voie, il te faut tester a chaque appel de ton slot que le curseur se trouve dans l'image par calcul comme tu le fais.

    Sinon il te faudrait créer un widget personnalisé dérivant de QLabel dans lequel tu intégrerais un slot de gestion de MouseEvent de manière a obtenir directement la position de ton curseur relative a ton image qui ne serait appelé QUE lorsque ton curseur se trouve "dans" ton image t'épargnant des calculs laborieux.
    Le savoir est un droit universel, libérez le code source
    Mon site
    Aidez nous à militer pour l'adoption d'un nouveau smiley
    "C'est en s'attardant en bas que l'on monte plus haut "
    "Un home qui veut faire de grande chose doit vivre comme s'il ne devait jamais mourrir !"
    attention je mords
    Bye

  10. #30
    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 Shugo78 Voir le message
    Ce n'est pas la méthode que j'emploierais, mais si tu veux continuer dans la même voie, il te faut tester a chaque appel de ton slot que le curseur se trouve dans l'image par calcul comme tu le fais.

    Sinon il te faudrait créer un widget personnalisé dérivant de QLabel dans lequel tu intégrerais un slot de gestion de MouseEvent de manière a obtenir directement la position de ton curseur relative a ton image qui ne serait appelé QUE lorsque ton curseur se trouve "dans" ton image t'épargnant des calculs laborieux.
    Je pense pas pouvoir faire ce que tu me dis car je suis debutant mais ça m'interesse vraiment comme methode.ça fait deja 1 semaine que je bidouille avec ma methode!Si tu veux vrement me rendre un service en exploitant ta methode ça serait cool!Sinon je continue avec le mien!
    Encore merci!


    ps: "C'est en s'attardant en bas que l'on monte plus haut "

  11. #31
    Rédacteur

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

    Par défaut

    Citation Envoyé par Shugo78 Voir le message
    Ce n'est pas la méthode que j'emploierais, mais si tu veux continuer dans la même voie, il te faut tester a chaque appel de ton slot que le curseur se trouve dans l'image par calcul comme tu le fais.

    Sinon il te faudrait créer un widget personnalisé dérivant de QLabel dans lequel tu intégrerais un slot de gestion de MouseEvent de manière a obtenir directement la position de ton curseur relative a ton image qui ne serait appelé QUE lorsque ton curseur se trouve "dans" ton image t'épargnant des calculs laborieux.
    +1 pour cette solution.

  12. #32
    Membre émérite
    Avatar de Shugo78
    Profil pro
    Inscrit en
    mars 2007
    Messages
    1 114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2007
    Messages : 1 114
    Points : 963
    Points
    963

    Par défaut

    C'est le principe selon lequel tout problème logiciel peut être résolu par lajout d'une nouvelle couche d'indirection. Je te conseillerais de partir sur cette structure de travail :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    class monImage : public QLabel
    {
         Q_OBJECT
    public :
         monImage (QWidget *parent = 0) ;
    protected :
         void mouseMoveEvent (QMouseEvent *event) ;
    } ;
    Il te reste a configurer le widget (regarde des tutoriels sur la création de widget personnalisés si tu doutes de toi) et dans ta réimplémentation de mouseMoveEvent et tu obtiendras les positions du curseur relatives a ton widget personnalisé.
    Le savoir est un droit universel, libérez le code source
    Mon site
    Aidez nous à militer pour l'adoption d'un nouveau smiley
    "C'est en s'attardant en bas que l'on monte plus haut "
    "Un home qui veut faire de grande chose doit vivre comme s'il ne devait jamais mourrir !"
    attention je mords
    Bye

  13. #33
    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

    voici un exemple avec les eventFilter. Perso, je trouve cela beaucoup plus propre


    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    #include <QtGui>
     
    class maWindow : public QMainWindow
    {
        Q_OBJECT
        QLabel *m_label;
    public :
    maWindow()
    {
        m_label = new QLabel(this);
       //maWindow servira de filtre sur les event du label
        m_label->installEventFilter(this);
        m_label->setMouseTracking (true);
        QScrollArea * scroll = new QScrollArea(this);
        {
            scroll->setWidget(m_label);
            setCentralWidget(scroll);
        }
        menuBar()->addAction("ouvrir image",this,SLOT(ouvrirImage()));
    }
     
    public slots :
        void ouvrirImage()
        {
            QString nom = QFileDialog::getOpenFileName(this,"ouvrir image");
            if ( ! nom.isEmpty() )
            {
                m_label->setPixmap( QPixmap (nom));
                m_label->resize(m_label->pixmap()->size());
            }
        }
    protected :
        //filtre d'evenement
        bool eventFilter(QObject *obj,QEvent *ev)
        {
            //cast de obj en QLabel*
            QLabel *label = qobject_cast<QLabel *>(obj);
            //si object est un label et que l'evènement est généré par un mouvement de la souris
            if (label && ev->type() == QEvent::MouseMove)
            {
                //affiche la position courante de la souris dans le repère du label et donc de l'image
                QMouseEvent * mouseEvent = static_cast<QMouseEvent *>(ev);
                QString format = "position du pixel = %1  --  %2" ;
                statusBar()->showMessage( 
                                            format  .arg( mouseEvent->x() )
                                                    .arg( mouseEvent->y() )
                                        );
            }
            // Comm l'on ne fait qu'observer les évènements, on appel la méthode par défaut.
            return QMainWindow::eventFilter(obj,ev);
        }
     
    };
    #include "main.moc"
     
    int main(int argc, char **argv)
    {
        QApplication app(argc, argv);   
        maWindow w;
        w.show();
     
        return app.exec();
    }
    Développeur Windows 8, Windows phone 8 et Nokia Asha, inscrivez vous sur DVLUP

  14. #34
    Invité de passage
    Homme Profil pro Mehdi Ben
    Étudiant
    Inscrit en
    novembre 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Nom : Homme Mehdi Ben
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : novembre 2012
    Messages : 1
    Points : 1
    Points
    1

    Par défaut et c'est encor plus simple

    if (event->button() == Qt::LeftButton)
    {
    QMessageBox::information(this, tr("Coordonne X, Y"), tr("Pixel: X = %1. Y= %2.").arg(event->x()).arg(event->y())) ;
    }

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

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
  •