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 :

Spécifier un clic droit ou gauche dans SIGNAL?


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 117
    Par défaut Spécifier un clic droit ou gauche dans SIGNAL?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    connect(xbelTree, SIGNAL(clicked(const QModelIndex&)), this,
    			SLOT(ShowWidget()));
    Je voulais savoir comment on peut spécifier un clic gauche pour un signal afin que le slot showwidget() s'effectue par un clic gauche et laisser le clic droit pour un menu contextuel?

  2. #2
    Membre expérimenté Avatar de cayou66
    Inscrit en
    Décembre 2008
    Messages
    286
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Décembre 2008
    Messages : 286
    Par défaut
    Salut,
    mise à part de redéfinir les méthodes mousePressEvent, je vois pas trop...

    Tu aurais ton propre "xbelTree", avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    xbelTree::mousePressEvent(QMouseEvent *e)
    {
        if(e.button == Qt::LeftButton)
        {
        emit monSignal;
        } 
        QWidget::mousePressEvent(e);
    }

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 117
    Par défaut
    ça ne marchait pas.
    En tapant ce code je ne peux plus cliquer sur mes treewidgetitem.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    xbelTree->setContextMenuPolicy(Qt::CustomContextMenu);
    	connect(xbelTree, SIGNAL(customContextMenuRequested(const QPoint &)),
    			SLOT(showContextMenu(const QPoint &)));
     
    	connect(xbelTree, SIGNAL(doubleClicked(const QModelIndex&)), this,
    			SLOT(ShowWidget()));
    En fait, j'ai deux connect pour mon xbelTree et avec mousepressevent(), je ne peux pluc cliquer sur mon xbelTree qui hérite de treewidget

  4. #4
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 117
    Par défaut
    salut,
    pour émettre monSignal j'ai besoin d'un signal qui me renvoi un QMouseEvent
    par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    connect(xbelTree, SIGNAL(clicked(const QMouseEvent &)), xbelTree,
    			SLOT(MousePressEvent(QMouseEvent *e )));
    ce qui n'est pas le cas, comme clicked a besoin d'un const QModelIndex &!!!
    Merci

  5. #5
    Membre expérimenté Avatar de cayou66
    Inscrit en
    Décembre 2008
    Messages
    286
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Décembre 2008
    Messages : 286
    Par défaut
    ça ne marchait pas.
    En tapant ce code je ne peux plus cliquer sur mes treewidgetitem.
    Hu? Tu as bien mis la ligne "QWidget::mousePressEvent(e);"
    Car sans celle là, tu ne transmet pas l'event sur l'item, donc pas de réaction.

  6. #6
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 117
    Par défaut
    voici mon code :
    .h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    signals:
     
    	void mouseClicked();
     
    private slots:
     
    	void MouseClickEvent(QMouseEvent *e);
    .cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    void XbelTree::MouseClickEvent(QMouseEvent *e) {
    	if (e->button() == Qt::LeftButton) {
    		std::cout<<" in Qt::LeftButton"<<std::endl;
    		emit mouseClicked();
    	}
    	std::cout<<" out Qt::LeftButton"<<std::endl;
    	QWidget::mousePressEvent(e);
    }
    main.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    	xbelTree->setContextMenuPolicy(Qt::CustomContextMenu);
    	connect(xbelTree, SIGNAL(customContextMenuRequested(const QPoint &)),
    			SLOT(showContextMenu(const QPoint &)));
     
    	connect(xbelTree, SIGNAL(clicked(const QModelIndex &)), xbelTree,
    			SLOT(MouseClickEvent(QMouseEvent *e const)));
     
    	connect(xbelTree, SIGNAL(mouseClicked()), this, SLOT(ShowWidget()));
    Mais lorsque je clique sir le bouton gauche rien ne se passe: le slot showwidget() ne s'exécute pas.Je n'ai pas trouvé une solution.

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

Discussions similaires

  1. [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
  2. [AC-2007] Clic droit avec image dans un état
    Par Marsupio dans le forum IHM
    Réponses: 1
    Dernier message: 10/02/2011, 13h29
  3. [AC-2003] Clic Droit Copier/Coller dans un formulaire
    Par vversaveau dans le forum Access
    Réponses: 1
    Dernier message: 22/07/2010, 11h35
  4. clic droit et gauche
    Par marwen1986 dans le forum GTK+ avec C & C++
    Réponses: 1
    Dernier message: 07/09/2008, 10h06
  5. clic droit pour selectionner dans une listbox
    Par Jeannot dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 23/08/2007, 16h32

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