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 :

Différencier un clic droit et gauche sur QTableView

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 65
    Points : 30
    Points
    30
    Par défaut Différencier un clic droit et gauche sur QTableView
    Bonjour,



    J'ai une fenêtre dans laquelle il y a plusieurs Qtableview.

    On peut faire un clic gauche qui génère différente action ou un droit qui ouvre un menu.

    A lors actuel, si il fait un clic gauche il génère les actions donc ok

    Mais si je fais un clic droit, j'ouvre mon menu mais je génère aussi ces actions.... savez vous comment différencier les 2 clics afin d'éviter cela ?



    Merci d'avance

  2. #2
    Membre actif
    Avatar de GreatTux
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2009
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Indre et Loire (Centre)

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

    Informations forums :
    Inscription : Octobre 2009
    Messages : 77
    Points : 287
    Points
    287
    Par défaut
    Vous pouvez jeter à un oeil à QMouseEvent::button()

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 65
    Points : 30
    Points
    30
    Par défaut
    Salut et merci pour ta réponse mais je n'arrive pas à surcharger cette méthode....

  4. #4
    Membre expérimenté

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2009
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 009
    Points : 1 738
    Points
    1 738
    Par défaut
    Qui a parlé de surcharger quoi que ce soit... Par manque d'information, GreatTux a supposé que les "actions" sont dûes à ta redéfinition de mousePressEvent, et donc grâce à la méthode button() tu peux tester quel bouton a été pressé (l'objet QMouseEvent étant passé en paramètre de mousePressEvent).

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 65
    Points : 30
    Points
    30
    Par défaut
    Salut,

    Pour faire simple, j'ai un Qtableview j'utilise le slot clicked(QmodelIndex e)
    C'est dans ce slot que j'ai ma fonction.

    Tu sait comment récupérer le clic depuis cette fonction ?

    Merci d'avance

  6. #6
    Membre expérimenté

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2009
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 009
    Points : 1 738
    Points
    1 738
    Par défaut
    Malheureusement, le signal clicked() ne transporte pas l'information du bouton utilisé pour cliqué, il est déclenché pour chaque bouton. Seul un QMouseEvent porterait cette information.

    Tu n'as pas d'autre choix que de redéfinir mousePressEvent...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void MyTableView::mousePressEvent ( QMouseEvent * e )
    {
        if (e->button() == Qt::LeftButton)
            QTableView::mousePressEvent(e);
        else
            QWidget::mousePressEvent(e); // ne devrait pas envoyer le signal clicked()
    }

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 65
    Points : 30
    Points
    30
    Par défaut
    Merci, je vais essayer cela.
    Ce code tu le met dans la classe dans laquelle se trouve les fenêtres ?

    Et l'autre problème, c'est que j'ai plusieurs tables, il faudrait donc un paramètre pour distinguer la table cliqué....

    Merci beaucoup pour ton aide

  8. #8
    Membre expérimenté

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2009
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 009
    Points : 1 738
    Points
    1 738
    Par défaut
    Ce que j'ai appelé MyTableView est une classe que tu dois créer, qui hérite de QTableView.

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 65
    Points : 30
    Points
    30
    Par défaut
    Super, j'essayerais ça rapidement.
    Et sais tu comment je peut récupérer le paramètre tel que par exemple le nom de la table ?

  10. #10
    Membre expérimenté

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2009
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 009
    Points : 1 738
    Points
    1 738

Discussions similaires

  1. [MooTools] Evénement pour clic droit ou gauche
    Par drick35 dans le forum Bibliothèques & Frameworks
    Réponses: 5
    Dernier message: 02/11/2012, 15h46
  2. [Débutant] Tester clic droit ou gauche souris
    Par shaun_the_sheep dans le forum C#
    Réponses: 4
    Dernier message: 02/10/2012, 09h57
  3. supprimer les marges des côtés droit et gauche sur iphone
    Par mikesquake dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 30/08/2010, 16h40
  4. Spécifier un clic droit ou gauche dans SIGNAL?
    Par maroua_mm dans le forum Qt
    Réponses: 12
    Dernier message: 08/09/2009, 14h12
  5. clic droit et gauche
    Par marwen1986 dans le forum GTK+ avec C & C++
    Réponses: 1
    Dernier message: 07/09/2008, 10h06

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