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 :

gestion du clavier sans GUI


Sujet :

Qt

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 83
    Par défaut gestion du clavier sans GUI
    Bonjour,

    Aprés quelques recherches, j'ai du mal a savoir ce dont j'ai vraimment besoins.
    Voila j'ai une application qui ce lance en Console et uniquement en Console.


    J'aimerais qu'a chaque fois qu'une touche du clavier soit enfoncer, je puisse la répupérer et l'afficher. Comment faire ?

    J'ai eu quelque pistes comme QKeyEvent mais bon je ne comprend pas comment l'utiliser.

    Merci de votre aide.

  2. #2
    Rédacteur

    Avatar de johnlamericain
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    3 742
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Royaume-Uni

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

    Informations forums :
    Inscription : Août 2004
    Messages : 3 742
    Par défaut
    Citation Envoyé par lirycs78 Voir le message
    J'aimerais qu'a chaque fois qu'une touche du clavier soit enfoncer, je puisse la répupérer et l'afficher. Comment faire ?
    Tu réimplémente la fonction event() de QCoreApplication (la console)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    virtual bool event ( QEvent * e )
    et tu fais un test sur l'event e en comparant avec QEvent::KeyPress.

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 83
    Par défaut
    Merci pour cette réponse.
    Quand tu dit réimplanter c'est a dire ?

  4. #4
    Rédacteur

    Avatar de johnlamericain
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    3 742
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Royaume-Uni

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

    Informations forums :
    Inscription : Août 2004
    Messages : 3 742
    Par défaut
    Réimplémenter signifie :

    Dériver la classe QCoreApplication en une classe perso et définir la fonction event dans ta classe étant donné qu'elle est virtuel.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    class MyCoreApplication : public QCoreApplication
    {
    public:
      bool event ( QEvent * e )
    }
    Ca te parle cette pratique ?

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 83
    Par défaut
    Oui sa me parle mais je crois avoir trouver un exemple de code de ce que je chercher dans la doc. Dit moi si je me trompe : http://qt.developpez.com/doc/latest/qobject/#event

    A EventFilter . C'est bien sa que je cherche non ?
    Ou il me faut obligatoirement a gui dans le cas de l'exmple ( puisqu'il passe par QMainWindow)
    Merci encore.

  6. #6
    Rédacteur

    Avatar de johnlamericain
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    3 742
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Royaume-Uni

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

    Informations forums :
    Inscription : Août 2004
    Messages : 3 742
    Par défaut
    Citation Envoyé par lirycs78 Voir le message
    Oui sa me parle mais je crois avoir trouver un exemple de code de ce que je chercher dans la doc. Dit moi si je me trompe : http://qt.developpez.com/doc/latest/qobject/#event

    A EventFilter . C'est bien sa que je cherche non ?
    Ou il me faut obligatoirement a gui dans le cas de l'exmple ( puisqu'il passe par QMainWindow)
    Merci encore.
    Oui EventFilter ou event c'est 2 méthodes qui marche. Par contre pas besoin de GUI, c'est 2 méthodes peuvent être réimplémenté en héritant QCoreApplication qui est la fenêtre console (pas de gui).

    Bon courage.

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 83
    Par défaut
    Merci bien

  8. #8
    Rédacteur

    Avatar de johnlamericain
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    3 742
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Royaume-Uni

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

    Informations forums :
    Inscription : Août 2004
    Messages : 3 742
    Par défaut
    Citation Envoyé par lirycs78 Voir le message
    Merci bien
    N'oublie pas de marquer le sujet comme quand tu auras fini tes tests et à nous donner ton retour d'expérience s'il peut être intéressant pour d'autres.

    Bonne continuation

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 83
    Par défaut
    Grrr rien a faire j'arrive pas a récupérer les event du clavier -__-

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    int main(int argc, char* argv[])
    {
        QApplication App(argc, argv);
     
        Prog coco;
     
        QCoreApplication::instance()->installEventFilter(&coco);
        blabla...
    }
    Classe B héritant de A, A qui hérite QObject

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        protected:
            bool eventFilter(QObject * watched, QEvent * event);
    Implémentation

    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
    bool Prog::eventFilter(QObject * watched, QEvent * event)
    {
        try
        {
            if(event->type() == QEvent::KeyPress)
            {
                cout << "oooooooooooooooooooooooooooooooooooooooooooooo" << endl;
                QKeyEvent *KeyEvent = static_cast<QKeyEvent*>(event);
                qDebug() << " Key : " << KeyEvent->key();
                return true;
            }
            else
            {
                return Loki::eventFilter(watched, event);
            }
        }
        catch(const string &chaine)
        {
            cerr << chaine << endl;
        }
    }
    Et ken je tape sur une touche, rien ne s'affiche a l'ecran >__<

  10. #10
    Rédacteur

    Avatar de johnlamericain
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    3 742
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Royaume-Uni

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

    Informations forums :
    Inscription : Août 2004
    Messages : 3 742
    Par défaut
    J'ai fait des tests et je me suis renseigné plus sur le sujet et à priori les events du clavier ne sont pas intercepter par l'event loop en console. En gros pas de focus ni de receveur sur la console...

    Le seul moyen serait donc de taper dans stdin mais là ca devient plus compliquer et pas du Qt.

    Désoler, peut être que quelqu'un d'autre aurais une solution ?

  11. #11
    Membre actif
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 83
    Par défaut
    Oui je pense aussi que tu a raison, car je vien de tester un code qui hérite de QMainWindow. A partir du moment ou j'enléve Fenetre->show() sa ne marche plus -__-

    Merci de ton aide.

    Si quelqu'un aurait une idée ?

Discussions similaires

  1. Réponses: 7
    Dernier message: 22/10/2005, 13h51
  2. Gestion du clavier
    Par Ekinoks dans le forum OpenGL
    Réponses: 12
    Dernier message: 22/08/2005, 14h36
  3. gestion du Clavier
    Par benthebest dans le forum MFC
    Réponses: 13
    Dernier message: 07/05/2005, 22h39
  4. [MX]Optimisation de la gestion du clavier
    Par yacinechaouche dans le forum Flash
    Réponses: 8
    Dernier message: 18/04/2004, 02h13
  5. [Turbo Pascal] Lire une touche au clavier sans interrompre le programme
    Par Allelouia dans le forum Turbo Pascal
    Réponses: 13
    Dernier message: 29/03/2003, 22h31

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