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

GTK+ avec C & C++ Discussion :

Bloquer l'événement de la touche Enter du clavier dans un text_view


Sujet :

GTK+ avec C & C++

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2015
    Messages : 5
    Par défaut Bloquer l'événement de la touche Enter du clavier dans un text_view
    Salut, Je suis entrain de réaliser une calculatrice en Gtk et j'utilise un text_view pour récupérer l'opération à éffectuer. Lorsqu'on appui sur la touche Entrer du clavier dans un text_view par defaut on obient une nouvelle ligne, j'aimerais savoir comment faire pour récupérer l'événement de cette touche pour qu'elle ait le même rôle que mon bouton d'égalité. Merçi d'avance pour votre aide

  2. #2
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 308
    Billets dans le blog
    5
    Par défaut
    Bonsoir.

    Ce que je tenterais serait d'intercepter la frappe du clavier. Pour ce faire tu peux utiliser le signal "key-press-event" sur le GtkTextView étant donné qu'il hérite des GtkWidget.

    Dans le callback associé tu peux vérifier si la touche enfoncée n'est pas la touche "Entrer" Si tel est le cas tu peux alors activer directement le callback de ton bouton et renvoyé TRUE pour stopper la propagation du signal au buffer du TextView. ainsi tu n'auras pas de retour à la ligne.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2015
    Messages : 5
    Par défaut
    Vraiment merçi beuacoup ça marche

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2015
    Messages : 5
    Par défaut
    Dsl de te déranger encore. J'ai constaté que une fois l'événement d'une touche du clavier intercepté je deviens propriété de tout le reste. Et là çà m'agasse . Comment faire alors pour reprendre l'événement des autres touches.

  5. #5
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 308
    Billets dans le blog
    5
    Par défaut
    Peux-tu me montrer le code du callback associé ?

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2015
    Messages : 5
    Par défaut
    g_signal_connect(text_view, "key-press-event", G_CALLBACK (on_key_press), text_view)
    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
     
     
    void
    on_key_press (GtkWidget *widget, 
                  GdkEventKey *event,
                  gpointer  data)
    {
     
          //GdkModifierType modifiers;
     
         //modifiers = gtk_accelerator_get_default_mod_mask ();
        /*Determiner la touche pressée */
          switch (event->keyval)
          {
            case GDK_KEY_KP_0:
            case GDK_KEY_0:
                insert_text("0", data);
            break;
            case GDK_KEY_KP_1:
            case GDK_KEY_1:
                insert_text("1", data);
            break;
            case GDK_KEY_KP_2:
            case GDK_KEY_2:
                insert_text("2", data);
            break;
            case GDK_KEY_3:
            case GDK_KEY_KP_3:
                insert_text("3", data);
            break;
            case GDK_KEY_4:
            case GDK_KEY_KP_4:
                insert_text("4", data);
            break;
            case GDK_KEY_5:
            case GDK_KEY_KP_5:
                insert_text("5", data);
            break;
            case GDK_KEY_6:
            case GDK_KEY_KP_6:
                insert_text("6", data);
            break;
            case GDK_KEY_7:
            case GDK_KEY_KP_7:
                insert_text("7", data);
            break;
            case GDK_KEY_8:
            case GDK_KEY_KP_8:
                insert_text("8", data);
            break;
            case GDK_KEY_9:
            case GDK_KEY_KP_9:
                insert_text("", data);
            break;
            case GDK_KEY_Home:
            case GDK_KEY_Page_Up:
                insert_text("45", data);
            break;
            case GDK_KEY_End:
            case GDK_KEY_Page_Down:
                insert_text("45", data);
            break;
            case GDK_KEY_Left:        
                insert_text("G", data);
            break;
            case GDK_KEY_Right:
                insert_text("R", data);
            break;
            case GDK_KEY_Up:
                insert_text("Up", data);
            break;
            case GDK_KEY_Down:
                insert_text("Down", data);
            break;
            case GDK_KEY_plus:
            case GDK_KEY_KP_Add:
                insert_text("+", data);
            break;
            case GDK_KEY_KP_Multiply:
                insert_text("*", data);
            break;
            case GDK_KEY_KP_Subtract:
            case GDK_KEY_minus:
                insert_text("−", data);
            break;
            case GDK_KEY_KP_Decimal:
                insert_text(".", data);
            break;
            case GDK_KEY_KP_Divide:
            case GDK_KEY_slash:
            case GDK_KEY_division:
                insert_text("÷", data);
            break;
            case GDK_KEY_percent:
                insert_text("%", data);
            break;
            case GDK_KEY_parenleft:
                insert_text("(", data);
            break;
            case GDK_KEY_parenright:
                insert_text(")", data);
            break;
            case GDK_KEY_KP_Enter:
            case GDK_KEY_Return:
                insert_text("−", data);
            break;
     
     
        }
    }

  7. #7
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 308
    Billets dans le blog
    5
    Par défaut
    Le prototype de la fonction callback doit retourner un gboolean. Par défaut tu dois retourner FALSE. Commence par modifier ton code en ce sens. Ca devrait déjà te rendre la main.

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2015
    Messages : 5
    Par défaut
    Bon cette fois je pense q je suis satisfait. Vraiment merçi beaucoup. j'espère bien q je n'aurais plus de soucis à propos. Dans le cas contraire de te contact.

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/11/2014, 13h20
  2. ActionListener sur touche Enter du clavier ?
    Par korallly dans le forum Débuter
    Réponses: 11
    Dernier message: 24/05/2011, 09h21
  3. Comment créer un appuie de touche enter sans gestionnaire événement ?
    Par Telemak dans le forum Interfaces Graphiques en Java
    Réponses: 2
    Dernier message: 03/09/2007, 20h23
  4. Réponses: 3
    Dernier message: 10/07/2007, 11h13
  5. Réponses: 2
    Dernier message: 29/08/2005, 18h29

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