Bonjour à tous,
j'utilise Qt pour le gui de mon application SIP. Pour traiter SIP, j'utilise le framework pjsip 2.1. Je suis souvent confronté au problème de conversion de chaine de caractères. En effet je récupère les données de mon formulaire Qt sous forme d'un QString et je dois le convertir en pj_str_t pour le passer au framework pjsip. Voici actuellement comment je fais pour passer de QString à pj_str_t
Ce code fonctionne mais comme je dois le faire de nombreuse fois, je me suis dis que j'allai créer un classe pjsipQtWrapper qui va contenir des fonctions pour ce genre de conversion. Je crée donc une fonction comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 QString mystring = m_qtField.text(); QByteArray ba = mystring.toLatin1(); m_pj_account_cfg.username = pj_str(ba.data()); //ceci fonctionne
pjsipqtwrapper.h
pjsipqtwrapper.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 class PjsipQtWrapper { public: static pj_str_t ToPj_str(QString *string); };
Lorsque que j'utilise ce code et que je print les valeurs à différents endroit comme par exemple dans la fonction, juste après la fonction etc. je vois des valeur correctes, mais lorsque que je l'assigne à un champs de structure pjsip, j'obtient des erreurs.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 #include "pjsipqtwrapper.h" pj_str_t PjsipQtWrapper::ToPj_str(QString *string) { QByteArray ba = QByteArray(); ba = string->toLatin1(); return pj_str(ba.data()); }
Je n'ai vraiment aucune, mais aucune idée de mon erreur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 m_pj_account_cfg.id = PjsipQtWrapper::ToPj_str(&mystring); //ne fonctionne pas pj_str username_p = PjsipQtWrapper::ToPj_str(&mystring); m_pj_account_cfg.id = username_p; //ne fonctionne pas
merci d'avance de votre aide.
Partager