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

 C++ Discussion :

changer un pointeur QString en un type QString.


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 71
    Par défaut changer un pointeur QString en un type QString.
    Bonjour

    une question de debutant peut etre:
    s'il vous plait comment changer un pointeur QString en un type QString.

    Voila l'initialisation du pointeur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    for( int i = 0; i < formatsCount; i ++ )
    {
    formats[ i ] = new QString[ 2 ];
    }
     
    //projections
    for( int i = 0; i < projectionsCount; i ++ )
    {
    projections[ i ] = new QString[ 2 ];
    }
     
    #include "../inc/Dta.h"
    Dans le Dta.h les données sont décrite comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    formats[ 0 ][ 0 ] = "" ; formats[ 0 ][ 1 ] = "" ;
    formats[ 1 ][ 0 ] = "ESRI Shapefile" ; formats[ 1 ][ 1 ] = "shp" ;
    formats[ 2 ][ 0 ] = "MapInfo File" ; formats[ 2 ][ 1 ] = "tab" ;
    formats[ 3 ][ 0 ] = "BNA" ; formats[ 3 ][ 1 ] = "bna" ;
    formats[ 4 ][ 0 ] = "CSV" ; formats[ 4 ][ 1 ] = "csv" ;
    formats[ 5 ][ 0 ] = "GML" ; formats[ 5 ][ 1 ] = "gml" ;
    formats[ 6 ][ 0 ] = "KML" ; formats[ 6 ][ 1 ] = "kml" ;

    alors pour afficher dans un txtedit il faut que sa soit un QString et non pas pointeur sinon j'ai toujours une erreur de segmentation !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    txtFileSource->setText(formats[ 1 ][ 0 ]);

    Merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2009
    Messages : 110
    Par défaut
    Pour moi : formats[ 0 ][ 0 ] est un QString et non pas un pointeur. Mais pour répondre à ta question si on a par exemple< QString* string >et on veux passer au type QString , tu peux essayer <*string>.

    J'espère que ça répond à ta question.

    Bon Courage.

  3. #3
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Bonjour,
    Si tu as un tableau à 2 dimensions :
    Alors, il te faut déréférencer 2 fois pour obtenir une QString :
    format[i][j].

    Si tu as un tableau à 2 dimensions de pointeur de QString:
    Alors, il te faut déréférencer 3 fois pour obtenir une QString :
    *(format[i][j]).

    Question annexe : pourquoi un tableau de tableau sur des pointeurs et non un tableau de tableau sur des valeurs ?
    Question annexe 2 : pourquoi des tableaux et non des vector ? (ça t'épargnerais ces soucis).

  4. #4
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 71
    Par défaut pourquoi
    Bonjour,

    Merci bien pour vos reponses .

    J'utilise un tableau de pointeur parce que mon projet est de changer le framework de wxWidgets vers QT.Et l'ancienne version utilisait des new wxString, alors j'ai utilisé la même structure
    J'aime bien changer pour des valeurs comme ça j'utilise directement.

    J'aimerai avoir de l'aide pour ce sujet,
    Question: est ce je peux déclarer les données comme des QString directement dans mon Dta.h? comme ça j'ai pas besoin d'initialiser les tableaux au début du programme dans Frm.cpp??

    Je viens de modifier la déclaration du tableau comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for( int i = 0; i < formatsCount; i ++ )
    	{
     
    		QString formats [i];
    	}
    mais il y a une erreur de segmentation qui s'affiche!
    Est-ce dû aux types ,pointeurs?? mais là c'est un QString que je déclare et le settext prend un parametre QString ,je vois pas le problème.


    Merci pour votre aide une autre fois.

  5. #5
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Bonjour,
    Je dois avouer avoir du mal à comprendre la description de ton problème.
    Peux-tu préciser quel est le type de formats ?
    Peux-tu montrer comment tu initialises les différents éléments de ce(s) tableau(x) ?
    Peux-tu montrer comment tu les utilises ensuite ?
    Merci.

  6. #6
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 71
    Par défaut reponse
    le type de format est le suivant QString:

    je le declare dans ces lignes de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    for( int i = 0; i < formatsCount; i ++ )
    	{
     
    		formats[ i ] = new QString[ 2 ];
    	}
    #include "../inc/Dta.h" // j'inclue les donneé
    les données de ce tableau (du fichier Dta.h) c'est la suivante (le contenu de Dta.h :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    formats[ 0 ][ 0 ] =  "" ;				formats[ 0 ][ 1 ] =  "" ;
    formats[ 1 ][ 0 ] =  "ESRI Shapefile" ;			formats[ 1 ][ 1 ] =  "shp" ;
    formats[ 2 ][ 0 ] =  "MapInfo File" ;			formats[ 2 ][ 1 ] =  "tab" ;
    formats[ 3 ][ 0 ] =  "BNA" ;				formats[ 3 ][ 1 ] =  "bna" ;
    formats[ 4 ][ 0 ] =  "CSV" ;				formats[ 4 ][ 1 ] =  "csv" ;
    formats[ 5 ][ 0 ] =  "GML" ;				formats[ 5 ][ 1 ] =  "gml" ;
    formats[ 6 ][ 0 ] =  "KML" ;				formats[ 6 ][ 1 ] =  "kml" ;

    apres tout ca je voulais afficher le contenue de formats[1][0] dans un txtedit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    txtFileSource->setText(formats[ 1 ][ 0 ]);
    //j'ai essayer aussi comme vous m'avez demander : txtFileSource->setText(*(formats[ 1 ][ 0 ])); aussi txtFileSource->setText(**(formats[ 1 ][ 0 ])); !!
    Merci

Discussions similaires

  1. changer un pointeur QString en un type QString.
    Par chochatown dans le forum Qt
    Réponses: 2
    Dernier message: 16/06/2009, 16h04
  2. Réponses: 10
    Dernier message: 28/07/2006, 15h18
  3. Changer le pointeur de la souris
    Par jolann69 dans le forum 4D
    Réponses: 1
    Dernier message: 13/06/2006, 08h40
  4. Pointeurs et changement de types louches
    Par BenjaminLustrement dans le forum C
    Réponses: 8
    Dernier message: 08/06/2006, 13h34

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