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 :

keyPressEvent marche pas au top!


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 49
    Par défaut keyPressEvent marche pas au top!
    Bonjour,
    J'ai un problème avec le keyPressEvent qui se trouve dans ma classe, seul les touches SHIFT, CTRL sont captés.
    Je vous met un bout de code pour m'aider à débugger, ce sera plus explicite!

    LE .h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    #include <QKeyEvent>
    class Texte : public QWidget
    {
      Texte();
      protected:
        virtual void keyPressEvent(QKeyEvent *e);
    }
    et maintenant mon .cpp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #include "Texte.h"
    Texte::Texte()
    {
      setFocusPolicy(Qt::StrongFocus);
      //puis initialisation de mes parametres
    }
     
    void Texte::keyPressEvent(QKeyEvent *e)
    {
      QString str=e->text();
      cout<<"text="<<str.toStdString()<<endl;
    }
    Biensur ca n'affiche jamais "text=" sauf quand jtappe SHIFT ou CTRL.
    J'ai aussi essayé avec un switch(e->key()) et dans default mettre QWidget::keyPressEvent(e); mais pareil ca ne marche pas.

    Si quelqu'un pouvait me venir en aide, ce serait sympa

    Merci!

  2. #2
    Membre Expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Par défaut
    Salut,

    Tu dois avoir un problème quelque part ailleurs, ce code fonctionne très bien:
    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
    #include  <QApplication>
    #include <QWidget>
    #include <QKeyEvent>
     
    class Texte: public QWidget
    {
    protected:
    	virtual void keyPressEvent(QKeyEvent *e)
    	{
    		qDebug(e->text().toAscii().constData());
    		QWidget::keyPressEvent(e);
    	}
    };
     
    int main(int argc, char **argv)
    {
    	QApplication app(argc, argv);
     
    	Texte *t = new Texte;
    	t->resize(240, 320);
    	t->show();
     
    	return app.exec();
    }
    Tu n'aurais pas un filtre d'événement un peu plus haut?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 49
    Par défaut
    Si par filtre d'evenement, tu entends l'utilisation de la méthode eventFilter() non je ne l'utilise pas sinon je vois pas ce que tu veux dire (je débute dans Qt).

    Merci pour ton aide en tout cas!

  4. #4
    Membre Expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Par défaut
    Oui, c'est bien de ça dont je parlais. Donc, dans ton bout de code, y'a rien qui pose ce problème...
    Tu devrais tenter de réduire ton code au bout de code le plus minimal qui pose ce problème; ça te permettra de cibler le souci plus rapidement

  5. #5
    Membre Expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Par défaut
    Tu peux aussi tenter de mettre le focus directement sur le widget avec setFocus(true); Au cas où tu ais un ou plusieurs widgets ayant le strong focus... Ca te permettra de cibler un peu plus le problème.

Discussions similaires

  1. propriété top qui ne marche pas sur DIV relative
    Par comode dans le forum Mise en page CSS
    Réponses: 7
    Dernier message: 26/07/2013, 09h00
  2. requete qui marche pas top
    Par kaking dans le forum Langage SQL
    Réponses: 6
    Dernier message: 13/01/2009, 08h27
  3. 'SHOW TABLES' marche pas sous postgresql !?
    Par fet dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 13/05/2004, 09h28
  4. Réponses: 9
    Dernier message: 07/05/2003, 12h57
  5. Sysdate qui marche pas ??
    Par StouffR dans le forum Langage SQL
    Réponses: 4
    Dernier message: 28/08/2002, 13h23

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