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 :

Opérateur >> de QPixmap

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 36
    Par défaut Opérateur >> de QPixmap
    Bonjour,

    je voudrais inclure des icônes (avatars) à un logiciel de chat.
    Chaque objet client aurait un propre QPixmap.
    A chaque message posté, je voudrais afficher d'abord le QPixmap, puis le pseudo et enfin le message.

    Problème : Je ne sais pas comment utiliser l'operator<< de la classe QPixmap, ça ne veut pas afficher l'icône.

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
     
        QByteArray paquet;
     
        QDataStream out(&paquet,QIODevice::WriteOnly);
     
        QPixmap *pixmapAvatar=new QPixmap("puzzle.png");//Pour l'exemple
     
    //On prépare le paquet à envoyer
        QString messageAEnvoyer="<strong>"+lineEditPseudo->text()+"</strong> : "+ lineEditMessage->text();
     
        out<<(quint16)0;//On écrit 0 au début du paquet pour réserver la place pour écrire la taille
     
        out<<pixmapAvatar;//Bonne position?
     
        out<<messageAEnvoyer;//On ajoute le message à la suite
     
        out.device()->seek(0);//On se replace au début du paquet
     
        out<<(quint16)(paquet.size()-sizeof(quint16));//On écrase le 0 qu'on avait réservé par la longueur du message
     
     
        socket->write(paquet);//On envoie le paquet

  2. #2
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2013
    Messages : 610
    Billets dans le blog
    21
    Par défaut
    La réponse à ta question est dans la doc de Qt:

    Au sujet de l'opérateur << pour Qpixmap il est dit: "Writes the given pixmap to the given stream as a PNG image. Note that writing the stream to a file will not produce a valid image file." Il semble que la fonction save soit plus intéressante:

    "This function writes a QPixmap to the given device using the specified image file format and quality factor. This can be used, for example, to save a pixmap directly into a QByteArray"
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            QPixmap pixmap;
            QByteArray bytes;
            QBuffer buffer(&bytes);
            buffer.open(QIODevice::WriteOnly);
            pixmap.save(&buffer, "PNG"); // writes pixmap into bytes in PNG format

    Si tu tiens à l'opérateur << , jette un coup d'oeil à la doc concernant la serialisation (http://doc.qt.io/qt-5/datastreamformat.html) en face de QIcon

  3. #3
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 36
    Par défaut
    Bonjour stendhal666,

    j'ai mis ce que tu m'as dit dans mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    QByteArray paquet;
    QPixmap pixmap("puzzle.png");
    QByteArray bytes;
    QBuffer buffer(&bytes);
    buffer.open(QIODevice::WriteOnly);
    pixmap.save(&buffer, "PNG"); // writes pixmap into bytes in PNG format
     
    QDataStream out(&paquet,QIODevice::WriteOnly);
     
    //On prépare le paquet à envoyer
    QString messageAEnvoyer="<strong>"+lineEditPseudo->text()+"</strong> : "+ lineEditMessage->text();
     
    out<<(quint16)0;
     
    out<<pixmap;
     
    out<<messageAEnvoyer;
     
    out.device()->seek(0);
    out<<(quint16)(paquet.size()-sizeof(quint16));
     
     
    socket->write(paquet);//On envoie le paquet
    mais ça ne marche pas, ça écrit des tas de caractères bizarres...

  4. #4
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 36
    Par défaut
    Non, ça n'affiche rien à l'écran en fait.

  5. #5
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2013
    Messages : 610
    Billets dans le blog
    21
    Par défaut
    Mmm... je ne suis pas sûr de comprendre où se situe la question de l'affichage dans ton code. Je pensais que le socket était ouvert pour une communication réseau.
    Tu peux me dire un peu plus largement ce que tu cherches à faire?

  6. #6
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 36
    Par défaut
    Je cherche à afficher une icône à chaque message envoyé par un client. L'icône sera affichée en premier, avant le pseudo et le texte du message.

Discussions similaires

  1. [Binaire] Opérateurs de rotation dee bits ?
    Par Tifauv' dans le forum C
    Réponses: 3
    Dernier message: 09/11/2017, 11h29
  2. Opérateur de statistique
    Par Phil951 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 26/01/2004, 15h12
  3. Opérateur like
    Par Troopers dans le forum ASP
    Réponses: 3
    Dernier message: 15/09/2003, 19h19
  4. opérateur non applicable à ce type d'opérande
    Par Amon dans le forum Langage
    Réponses: 3
    Dernier message: 11/06/2003, 18h07
  5. [imprecis]Réaliser a^n avec seulement l'opérateur d'addition
    Par Amon dans le forum Algorithmes et structures de données
    Réponses: 18
    Dernier message: 08/11/2002, 22h22

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