[C++]Tetravex QDataStream et passage de unsigned short

Voir le sujet précédent Voir le sujet suivant Aller en bas

resolu [C++]Tetravex QDataStream et passage de unsigned short

Message  aleben89 le Mer 06 Avr 2011, 12:19

Bonjour,

Dans le cadre de l’implémentation du drag and drop, je passe par des QDataStream pour passer les éléments d'un widget à un autre. Cependant lorsque que je récupère mes éléments à la sortie de QDataStream, ils sont mis à leur valeur par défaut (0 pour un unsigned short ou ' ' pour un char). Est-ce que j'ai oublié quelque chose ou est-ce normale?

à l'entrée:
Code:
QByteArray itemData;
   QDataStream dataStream(&itemData,QIODevice::WriteOnly);
   unsigned short test;
   test=1024;
   dataStream <<testn;
   QMimeData *mimeData=new QMimeData;
   mimeData->setData("application/x-dnditemdata", itemData);

à la sortie:

Code:
QByteArray itemData;
   QDataStream dataStream(&itemData,QIODevice::ReadOnly);
   unsigned short code;

   dataStream >>code ;

merci de m'aider

Aleben89


Dernière édition par aleben89 le Mer 06 Avr 2011, 14:59, édité 2 fois
avatar
aleben89

Nombre de messages : 108
Age : 28
Prénom : Benjamin
Statut : Etudiant 3ème Réseau
Localisation : Bruxelles ou en province de Luxembourg (perdu en verte campagne entre 2 champs)
Date d'inscription : 27/01/2009

Revenir en haut Aller en bas

resolu Re: [C++]Tetravex QDataStream et passage de unsigned short

Message  smb le Mer 06 Avr 2011, 13:35

Quel est le lien entre le code "à l'entrée" et le code "à la sortie" ?

Comme tu le montres, je n'en vois pas !
avatar
smb

Nombre de messages : 1035
Age : 65
Prénom : Stéphan
Statut : Don de sang, don de vie!
Localisation : Spy
Date d'inscription : 23/01/2007

Revenir en haut Aller en bas

resolu Re: [C++]Tetravex QDataStream et passage de unsigned short

Message  aleben89 le Mer 06 Avr 2011, 13:57

le code de l'entrée est dans ma méthode void mousePressEvent(QMouseEvent *event); du contenu
et le code à la sortie est dans ma méthode void dropEvent(QDropEvent *event); du conteneur
avatar
aleben89

Nombre de messages : 108
Age : 28
Prénom : Benjamin
Statut : Etudiant 3ème Réseau
Localisation : Bruxelles ou en province de Luxembourg (perdu en verte campagne entre 2 champs)
Date d'inscription : 27/01/2009

Revenir en haut Aller en bas

resolu Re: [C++]Tetravex QDataStream et passage de unsigned short

Message  smb le Mer 06 Avr 2011, 14:08

aleben89 a écrit:le code de l'entrée est dans ma méthode void mousePressEvent(QMouseEvent *event); du contenu
et le code à la sortie est dans ma méthode void dropEvent(QDropEvent *event); du conteneur

Tu n'as pas répondu à ma question !

Enfin, ...

Si tu mettais QByteArray itemData comme attribut de ta fenêtre, ça n'irait pas mieux ?

Car itemData est local aux méthodes dont tu parles !
avatar
smb

Nombre de messages : 1035
Age : 65
Prénom : Stéphan
Statut : Don de sang, don de vie!
Localisation : Spy
Date d'inscription : 23/01/2007

Revenir en haut Aller en bas

resolu Re: [C++]Tetravex QDataStream et passage de unsigned short

Message  aleben89 le Mer 06 Avr 2011, 14:25

bon j'avoue qu'il y a un problème de communication car je ne vois pas ce que vous voulez me faire dire :p . Le problème étant que je veux communiqué entre 2 widgets différents :

TetraLabel
Code:

class TetraLabel : public QWidget
{
public:
   TetraLabel(Tetra=Tetra('1','1','1','1'),QWidget * parent=NULL);
   TetraLabel(Tetra);
   TetraLabel(const TetraLabel &);
   TetraLabel operator=(const TetraLabel &);

   Tetra getTetra();
   ~TetraLabel();
protected:
   void paintEvent(QPaintEvent * event);
   void mousePressEvent(QMouseEvent *event); //ici j'ai mon entree dans le QDataStream

private:
   QColor choixCouleur(char);
   Tetra * tetra;
   QWidget * parent;
};

CasePlateau:
Code:


class CasePlateau : public QLabel
{
   public:
      CasePlateau(TetraLabel *,QWidget * parent,int x=-1,int y=-1);
      ~CasePlateau();
   private:
      TetraLabel * tetraL;
      QLabel * label;
      bool position;
   protected:
      void paintEvent(QPaintEvent * event);
      void dragEnterEvent(QDragEnterEvent *event);
      void dropEvent(QDropEvent *event);//ici j'ai la sortie de mon QDataStream
};

je dois créé un QByteArray itemData dans une classe en commun ? et le passer en paramètre au constructeur de c'est 2 différents objets ?
avatar
aleben89

Nombre de messages : 108
Age : 28
Prénom : Benjamin
Statut : Etudiant 3ème Réseau
Localisation : Bruxelles ou en province de Luxembourg (perdu en verte campagne entre 2 champs)
Date d'inscription : 27/01/2009

Revenir en haut Aller en bas

resolu Re: [C++]Tetravex QDataStream et passage de unsigned short

Message  smb le Mer 06 Avr 2011, 14:34

En fait, je répondais à la question initiale : pourquoi le code "à la sortie" place dans l'unsigned code la valeur 0.

Code:

QByteArray itemData;
QDataStream dataStream(&itemData,QIODevice::ReadOnly);
unsigned short code;
dataStream >>code ;

Ma réponse est : normal, car itemData est local à la méthode, et n'a rien à voir avec itemData du code "à l'entrée".
avatar
smb

Nombre de messages : 1035
Age : 65
Prénom : Stéphan
Statut : Don de sang, don de vie!
Localisation : Spy
Date d'inscription : 23/01/2007

Revenir en haut Aller en bas

resolu Re: [C++]Tetravex QDataStream et passage de unsigned short

Message  aleben89 le Mer 06 Avr 2011, 14:59

Merci beaucoup maintenant il transmet bien mes informations Smile je vais pouvoir continuer mon projet un grand merci Mr. SMB
avatar
aleben89

Nombre de messages : 108
Age : 28
Prénom : Benjamin
Statut : Etudiant 3ème Réseau
Localisation : Bruxelles ou en province de Luxembourg (perdu en verte campagne entre 2 champs)
Date d'inscription : 27/01/2009

Revenir en haut Aller en bas

resolu Re: [C++]Tetravex QDataStream et passage de unsigned short

Message  Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum