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 :

a propos de Qtextedit

  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 42
    Par défaut a propos de Qtextedit
    Bonsoir,

    J'avais 2 questions à propos de qtextedit:

    1/ Comment faire pour empêcher l'utilisateur de saisir des lettres?
    J'ai bien repéré la fonction "setvalidator", mais elle n'a l'air de s'utiliser que pour qlineEdit.

    2/ Comment faire pour récupérer un char?
    J'avais penser récupérer le contenue avec un plaintext:

    ZoneDeSaisie = new QTextEdit(this);
    QString texterecupere = ZoneDeSaisie->toPlainText();
    Puis le convertir:
    const char * c = texterecupere .toStdString().c_str();
    Mais je n'ai réussi au mieux qu'à récupérer un "const char" (quel est est la différence avec un "char"?), or j'aimerai récupérer un char *

    merci.

  2. #2
    Membre expérimenté Avatar de MacPro
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 367
    Par défaut
    Salut, comme pour beaucoup de widgets, le QTextEdit possède son flag de lecture seule :

    documentation de QTextEdit : setReadOnly(bool ro)

    Je sais pas ce que tu as besoin de faire, mais ptêtre que le QPlainTextEdit suffirait, car :

    The QTextEdit class provides a widget that is used to edit and display both plain and rich text
    (documentation de QTextEdit)

    la différence entre char et const char réside dans le fait que le mot clé const indique que la valeur de retour ne pourra pas être modifiée. Toi, tu veux visiblement un char*.

    Je ne m'en suis jamais servi de cette manière. En regardant la doc de QTextEdit, on a :

    QString toPlainText () const

    Ensuite, en allant regarder chez QString (documentation de QString) on n'a rien qui retourne un char* mais presque : const QChar * data () const

    En regardant un peu mieux, on voit qu'on peut récupérer un QByteArray (documentation de QByteArray) avec QByteArray QString::toAscii () const

    Ce même QByteArray propose une méthode char * data ()

    Voilà, tu as donc le cheminement qu'il faut.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    QString l_strMessage(monTextEdit->toPlainText()); // on récupère le message
    char* l_pstrMessage = l_strMessage.toAscii().data();
    Remarque :
    Je ne pense pas que ce soit la meilleure solution, ça fait beaucoup de conversions ! Il y a d'autres méthodes plus rapides sans passer par le QbyteArray.

  3. #3
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 42
    Par défaut
    Merci, sa fonctionne.

    ps: tu n'aura pas un idée pour la première question?

  4. #4
    Membre expérimenté Avatar de MacPro
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 367
    Par défaut
    Salut, il marche pas le setReadOnly comme indiqué au début de ma réponse ?

    (Lorsque c'est résolu, pense à venir mettre ton thread en [Résolu])

  5. #5
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 42
    Par défaut
    Excuse moi je me suis mal exprimé pour ma première question. Mon objectif est de saisir uniquement des chiffres et empêcher l'utilisateur de saisir des lettres ou des caractères spéciaux.

    ps: je penserai à valider le topic, ne t'inquiète pas.

    merci.

  6. #6
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par straycat Voir le message
    Excuse moi je me suis mal exprimé pour ma première question. Mon objectif est de saisir uniquement des chiffres et empêcher l'utilisateur de saisir des lettres ou des caractères spéciaux.
    Pourquoi QLineEdit ne suffi pas?

  7. #7
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 42
    Par défaut
    J'ai besoin d'une zone de texte d'une longueur de 64 caractères et 10 lignes de hauteur.

  8. #8
    Membre très actif
    Avatar de buggen25
    Ingénieur développement logiciels
    Inscrit en
    Août 2008
    Messages
    554
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Août 2008
    Messages : 554
    Par défaut
    Citation Envoyé par straycat Voir le message
    J'ai besoin d'une zone de texte d'une longueur de 64 caractères et 10 lignes de hauteur.
    Longueur de 64 caractères, et 10 lignes de hauteur ... je vois pas tres bien
    Peut etre que c'est un QTextEdit de 64 caractères par ligne et 10 lignes de hauteur ?,,,,

  9. #9
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 42
    Par défaut
    C'est exactement ça.

  10. #10
    Membre très actif
    Avatar de buggen25
    Ingénieur développement logiciels
    Inscrit en
    Août 2008
    Messages
    554
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Août 2008
    Messages : 554
    Par défaut
    Citation Envoyé par straycat Voir le message
    C'est exactement ça.
    T'es sure, il n'y a pas beaucoup de place dans ton Qwidget ou ton QDialog. Ou les loyers ont augmenté a cause du rachat par Nokia
    Tu peut pas parametrer tout ça avec le designer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Windows + R
    designer
    Ensuite tu calibre tout ça avec le designer, ensuite tu fais Ctrl+R pour avoir un aperçu, ensuite tu commence a compter le nombre de caractères et de lignes.

  11. #11
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 42
    Par défaut
    J'ai déja ma QtextEdit configuré avec les bonnes dimensions. Mais je répondais à Mongaulois qui me demandait:
    Pourquoi QLineEdit ne suffi pas?
    Par contre je n'ai trouvé aucune option dans le designer me permettant d'entrer que des chiffres.

  12. #12
    Membre très actif
    Avatar de buggen25
    Ingénieur développement logiciels
    Inscrit en
    Août 2008
    Messages
    554
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Août 2008
    Messages : 554
    Par défaut
    Il n'existerait pas une chose comme QValidator, si je m'en souvien bien. Qui fonctionne parfaitement avec les RegExp ( les Expressions Eegulières ) qui va te premettre de saisir uniquemnt des chiffres
    Tu devrait utiliser "assistant" et tapper dans l'index QValidator, et QRegExp pour voir, essaye ça c'est bien comme methode ( je peut pas me souvenir des intitulés exactes des classes )
    A+

  13. #13
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 42
    Par défaut
    C'est deux fonctions ne me sont pas inconnues, je te tiens au courant,

    merci

  14. #14
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 42
    Par défaut
    je suis d'accord que la fonction "qRegExpValidator" me permettrai, appliquer à une qLineEdit, de restreindre la saisie qu'au nombre.

    Mais je n'arrive pas à le faire fonctionner pour un qTextEdit...

  15. #15
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Par curiosité, cela représente quoi 64*10 chiffre??

  16. #16
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Par défaut
    Il y a la méthode bête et méchante de tester le caractère entré, et s'il n'est pas 0,1,2,3,4,5,6,7,8 ou 9, tu refuses.

    Ou alors tu crees un QIntValidator de 0 à 9, et dès que le texte change, tu testes le nouveau caractère avec ce validator (QValidator::validate(QString str, int pos)).

    G.

  17. #17
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 42
    Par défaut
    Par curiosité, cela représente quoi 64*10 chiffre??
    Dans la zone qTextEdit il y aura la possibilté d'afficher 640 chiffres.

    64 chiffres par ligne sur 10 lignes

    <-------------64 chiffres--------------->
    |
    |
    |
    |
    |10 lignes
    |
    |
    |
    |
    |
    <-------------64 chiffres--------------->

    J'ai répondu à ta question?

  18. #18
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 42
    Par défaut
    Il y a la méthode bête et méchante de tester le caractère entré, et s'il n'est pas 0,1,2,3,4,5,6,7,8 ou 9, tu refuses.
    C'est une bonne idée, mais je n'est pas réussi à la mettre en pratique, par quel moyen je pourrai vérifier la saisie clavier, <STDIN> .


    Ou alors tu crees un QIntValidator de 0 à 9, et dès que le texte change, tu testes le nouveau caractère avec ce validator (QValidator::validate(QString str, int pos)).
    Cette fonction ne marche que pour QLineEdit.

    merci, tous.

  19. #19
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Par défaut
    Cette fonction ne marche que pour QLineEdit.
    Euh, pas tout à fait. Tu as raison dans le sens où tu ne peux pas faire setValidator() sur un QTextEdit. Hors, lorsque l'utilisateur change le contenu de ton QTextEdit, le signal textChanged() est émis. Tu pourrais ainsi l'utiliser sur le text du QTextEdit à chaque changement.

    Sinon, je viens de voir un autre truc, c'est ça :
    QString & QString::remove ( const QRegExp & rx )
    This is an overloaded member function, provided for convenience.

    Removes every occurrence of the regular expression rx in the string, and returns a reference to the string. For example:

    QString r = "Telephone";
    r.remove(QRegExp("[aeiou]."));
    // r == "The"See also indexOf(), lastIndexOf(), and replace().
    Je suis nul en expression régulière, mais je suppose qu'il est possible de faire un truc simple en appliquant ça à chaque fois que le texte change.

    Bonne chance.

    G.

  20. #20
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    deux questions :
    1- chaque ligne est limité à 64 chiffre?
    2- s'il y en as moins que doit tu faire? afficher un 0 à la place un espace?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. A propos de Last_insert_id
    Par f-demu01 dans le forum Administration
    Réponses: 2
    Dernier message: 26/03/2003, 08h32
  2. A propos depth buffer
    Par j.yves dans le forum DirectX
    Réponses: 1
    Dernier message: 03/12/2002, 00h41
  3. A propos des modèles d'objet (avec sources)
    Par DevX dans le forum C++Builder
    Réponses: 14
    Dernier message: 01/12/2002, 12h22
  4. Fonctionnement de la compression DivX
    Par Rodrigue dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 20/09/2002, 14h10
  5. A propos du composant DBGrid
    Par _Rico_ dans le forum C++Builder
    Réponses: 2
    Dernier message: 24/07/2002, 09h18

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