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 :

mousePressEvent et qt Designer


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 237
    Par défaut mousePressEvent et qt Designer
    Bonjour, j'ai un menu bar composé de quatre boutons dans mon ihm fait avec qt Designer et je voudrais faire un Switch entre les 4 boutons: c'est a dire à chaque fois qu'un bouton est cliqué j'active la fonction mousePressEvent qui fait des choses differentes suivants le bouton activé:
    La grande question c'est comment je peux selection ce que je veux faire suivant que tel ou tel bouton soit cliqué!

    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
    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
     
    void maClass::mousePressEvent( QMouseEvent *event)
     {
     
       Switch(ui->MenuBouton) //ça marche mais c'est pour montrer une idée de ce que je veux faire
       {
     
        case BoutonVerticale: //Si c'est ce bouton qui est cliqué voila ce que doit faire un clique sur la souris
        {
         if ( event->button() == Qt::LeftButton)
         {
            for(i = 0; i < 1500; i++)  //Pour rendre une ligne verticale défectueuse!
             {
                img.setPixel(PositionX , (PositionY +i), qRgb(255, 0, 0)) ;
     
             }
     
            for(int j = 0; j < PositionY; j++)
            {
              img.setPixel(PositionX , (PositionY - j), qRgb(255, 0, 0)) ;
            }
        }
         break ;
    }
         case BoutonHorizontal:
         {
          if ( event->button() == Qt::LeftButton)
           {
            for(i = 1; i < 1800; i++) 
             {
                   img.setPixel((PositionX + i), PositionY, qRgb(255, 0, 0)) ;
                      for(int j = 0; j < PositionX; j++)
                   {
                   img.setPixel((PositionX - j), PositionY, qRgb(255, 0, 0)) ;
                   }
              } 
          }
     break ;
    }
        case BoutonSeul:
       {
        if ( event->button() == Qt::LeftButton)
        {
     
            img.setPixel(PositionX, PositionY, qRgb(255, 0, 0)) ; 
        }
    break ;
    }
            m_label->setPixmap(QPixmap::fromImage(img)) ;
            ui->ZoneImage->setWidget(m_label) ;
     
     
         }
    merci d'avance!

    Sinon est -il possible d'appeler la fonction QMousePressEvent dans une autre methode?J'ai essayé et je pense que non?

  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
    Par défaut
    Citation Envoyé par lisco Voir le message
    Bonjour, j'ai un menu bar composé de quatre boutons dans mon ihm fait avec qt Designer et je voudrais faire un Switch entre les 4 boutons: c'est a dire à chaque fois qu'un bouton est cliqué j'active la fonction mousePressEvent qui fait des choses differentes suivants le bouton activé
    Pourquoi tu n'utilise pas le signal de tes boutons?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 237
    Par défaut
    Citation Envoyé par yan Voir le message
    Pourquoi tu n'utilise pas le signal de tes boutons?
    J'ai essayé mais je capte pas trop car ces 4 quatres boutons ont le meme SLOT qui est mousePressEvent mais juste que ça fait des choses différentes suivants le bouton cliqué au paravant!!

    j'ai mis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    connect(ui->BoutonVerticale, SIGNAL(triggered()), this, SLOT(mousePressEvent(QMouseEvent*)))) ;
    mais ça me fait dans ce cas les 4 boutons d'un seul cout

    j'ai essayé aussi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(ui->BoutonVerticale->triggered(true))
    mais c'est inactif

  4. #4
    Membre expérimenté
    Avatar de Niak74
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    271
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 271
    Par défaut
    Deux solutions :

    - Un slot par bouton qui décrit le comportement au clic de ce bouton. Connectes ensuite le signal clicked() de chaque bouton à son slot particulier.

    - Un slot pour tous les boutons. Les boutons possèdent un identifiant unique (par le objectName par exemple). Ce slot récupère le bouton qui émet le signal via la méthode sender(), puis son identifiant. En fonction de cet identifiant, tu es capable de déterminer l'action à effectuer. N'oublie pas pour finir de relier chaque signal clicked() de tes boutons à ce slot.

  5. #5
    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 Ryo2468 Voir le message
    - Un slot pour tous les boutons. Les boutons possèdent un identifiant unique (par le objectName par exemple). Ce slot récupère le bouton qui émet le signal via la méthode sender(), puis son identifiant. En fonction de cet identifiant, tu es capable de déterminer l'action à effectuer. N'oublie pas pour finir de relier chaque signal clicked() de tes boutons à ce slot.
    QSignalMapper peut être plus interessant pour cette solution

  6. #6
    Rédacteur

    Inscrit en
    Novembre 2006
    Messages
    1 272
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 272
    Par défaut
    Comment crées tu ta menu Bar avec tes boutons ?
    Vous voulez participer aux Tutoriels, FAQ ou Traductions et faire partie de l'équipe Qt de Developpez.
    N'hésitez pas à me contacter par MP.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 237
    Par défaut
    Citation Envoyé par superjaja Voir le message
    Comment crées tu ta menu Bar avec tes boutons ?
    avec Qt Designer!
    au passage , c'est assez bizarre car j'arrive plus a ajouter des widget , enfin dans le .ui j'ajoute des widgets mais quand je compile ils n'apparaissent pas

  8. #8
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    connect(ui->BoutonVerticale, SIGNAL(triggered()), this, SLOT(mousePressEvent(QMouseEvent*)))) ;

    quand on te donne des liens pour apprendre la base de Qt, se serait bien que tu les regardes, ne serai ce qu'un peu...

    Et si tu ne comprend pas quelque chose, demande.

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 237
    Par défaut
    Citation Envoyé par yan Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    connect(ui->BoutonVerticale, SIGNAL(triggered()), this, SLOT(mousePressEvent(QMouseEvent*)))) ;

    quand on te donne des liens pour apprendre la base de Qt, se serait bien que tu les regardes, ne serai ce qu'un peu...

    Et si tu ne comprend pas quelque chose, demande.
    ça marche bien ce que j'ai mis mais ça depend juste de là où on l'utilise, car je l'ai toujours utilisé! dit qu'est ce qui te géne dans ça?

  10. #10
    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 lisco Voir le message
    ça marche bien ce que j'ai mis mais ça depend juste de là où on l'utilise, car je l'ai toujours utilisé! dit qu'est ce qui te géne dans ça?
    Ce connect est faux.
    triggered() et mousePressEvent(QMouseEvent*) n'ont pas du tout la même signature et sont incompatible. De plus mousePressEvent n'est pas un slot.

    Si un objet envoi un signal clicked (ou triggered suivant ce que tu utilise), ce n'est pas pour rien.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 24/02/2009, 12h06
  2. [power designer et Sybase] trigger
    Par mr_qno dans le forum Sybase
    Réponses: 4
    Dernier message: 12/07/2006, 18h32
  3. [OpenTools, designer] CmtSubComponent et superClasse
    Par kainor dans le forum JBuilder
    Réponses: 4
    Dernier message: 04/03/2003, 11h32
  4. Réponses: 3
    Dernier message: 09/02/2003, 01h09
  5. Désigner une variable avec une variable?
    Par littleman dans le forum Paradox
    Réponses: 4
    Dernier message: 12/08/2002, 11h21

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