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 :

Convertir QString en std::string


Sujet :

Qt

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2018
    Messages : 30
    Points : 14
    Points
    14
    Par défaut Convertir QString en std::string
    salut je travail sur un projet , je suis bloque pour le moment au niveau de recuperer le nom d'un fichier qui s'ecrit dans un QLineEdit je lis ce qu'est ecrit avec la methode text() qui renvoie un qstring et pour le convertir en string j'ai utilise la methode toStdString , mais ca fonctionne pas , lorsque j'affiche sur le terminal la valuer convertit il s'affiche toujours le chiffre 1 , voila mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    {
        MaFenetre *so = new MaFenetre;
        QString qs = so->Lire_LineEdit() ;
        std::string inputFileName = qs.toStdString();
        std::cout<< "le nom du fichier :"<<inputFileName<<endl ;
    }
    j'ai utilise la methode LireçLineEdit() qui lit ce qui ecrit sur LineEdit , puisque l'objet est dans un autre classe MaFenetre, j'ai teste aussi avec les methodes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    toUtf8().constData();
    toLocal8Bit().constData();
    mais j'ai toujours le même problème que la valeur convertie égal à le chiffre 1 ; et merci d'avance pour vos aides

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 211
    Points : 137
    Points
    137
    Par défaut
    // Convertir QString en std::string
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    QString toto = "toto"
    std::string toto2= toto.toStdString();
    // Convertir std::string en QString
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    std::string MonString = "toto";
    QString toto = QString::fromStdString(MonString);
    // pour qDebug:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    std::string str="debug text";
    qDebug(qUtf8Printable(QString::fromStdString("Read path from " + str)));
    toStdString() est correct pour faire la conversion, c'est la fonction Lire_LineEdit() qui doit avoir un souci.
    peux tu donner le code ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    As-tu remarqué à quel moment la ligne « le nom du fichier : … » s'affichait dans ta sortie ?
    Réponse : bien avant que tu saisisses quoique ce soit dans ton QLineEdit.

    Ton programme ne s'arrête pas juste après cette instruction MaFenetre *so = new MaFenetre;(*) pour attendre une saisie, il exécute les lignes suivantes tout de suite après.
    Tu dois attendre un certain évènement (tel que l'appui sur la touche Entrée ou sur un bouton OK) effectué par l'utilisateur signifiant que la saisie a été effectuée, et ce n'est qu'à partir de là que tu pourras la récupérer. Pour ce faire, il te faut ajouter une connexion depuis le signal correspondant émit lors de cet évènement vers le slot qui exécute ce code de récupération et certainement d'autres actions avec.

    Sinon, attention tu as une fuite de mémoire sur so.

    (*) Généralement l'appel à show() se situe au même niveau que la création de la fenêtre, et non dans le constructeur. Et son absence me fait m'interroger sur l'emplacement de ces lignes… qui pourrait cacher un autre problème.

Discussions similaires

  1. QString et std::string
    Par jackk dans le forum Débuter
    Réponses: 15
    Dernier message: 18/06/2011, 17h10
  2. QString et std::string
    Par Cheps dans le forum Qt
    Réponses: 8
    Dernier message: 30/10/2008, 10h32
  3. Convertir un std::string en double.
    Par vdumont dans le forum SL & STL
    Réponses: 16
    Dernier message: 10/05/2006, 16h46
  4. convertir un char * en std::string
    Par benahpets dans le forum SL & STL
    Réponses: 12
    Dernier message: 01/05/2006, 17h15

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