Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. French
  4. QPixmap
QtWS25 Last Chance

QPixmap

Scheduled Pinned Locked Moved Solved French
5 Posts 2 Posters 852 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • P Offline
    P Offline
    polenord
    wrote on last edited by
    #1

    Bonjour a tous,
    J'écris depuis quelques temps des petits programmes sous Qt Creator.
    Aujourd'hui j'essaye de coder un delegate pour afficher une petite photo en base64.

    void pixDelegate::setEditorData( QWidget *editor, const QModelIndex &index ) const
    {
    if (index.column() != 3)
    {
    QItemDelegate::setEditorData(editor, index);
    return;
    }

    QLabel *label = qobject_cast<QLabel *>(editor);
    if (label)
    {
        QPixmap pixmap;
        QByteArray image Data = index.data(Qt::EditRole).toByteArray();
        if (pixmap.loadFromData(imageData))
                label->setPixmap(pixmap);
        return;
    }
    

    }

    1 Reply Last reply
    0
    • P Offline
      P Offline
      polenord
      wrote on last edited by
      #2

      Bonjour a tous,
      Désolé, mon 1er post est partis avant que ma question soit terminée.
      J'écris depuis quelques temps des petits programmes sous Qt Creator.
      Aujourd'hui j'essaye de coder un delegate pour afficher une petite photo en base64.

      En fait je n'ai pas d'expérience dans l'écriture des delegate.
      et de plus dans mon cas, la déclaration du QPixmap pixmap me renvoie (dans le debugger) pixmap invalid ???

      merci pour vos réponses,
      A bientôt
      polenord

      void pixDelegate::setEditorData( QWidget *editor, const QModelIndex &index ) const
      {
      if (index.column() != 3)
      {
      QItemDelegate::setEditorData(editor, index);
      return;
      }
      QLabel *label = qobject_cast<QLabel *>(editor);
      if (label)
      {
      QPixmap pixmap;
      QByteArray image Data = index.data(Qt::EditRole).toByteArray();
      if (pixmap.loadFromData(imageData))
      label->setPixmap(pixmap);
      return;
      }
      }

      1 Reply Last reply
      0
      • SGaistS Offline
        SGaistS Offline
        SGaist
        Lifetime Qt Champion
        wrote on last edited by
        #3

        Bonsoir et bienvenue sur devnet,

        Si l'image est en base64, il faut d'abord la décoder.

        Pour ce qui est du message parti trop vite, tous les messages sont editable par leur auteur donc des corrections peuvent y être apportées sans avoir besoin de créer de nouveaux messages.

        Interested in AI ? www.idiap.ch
        Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

        1 Reply Last reply
        0
        • P Offline
          P Offline
          polenord
          wrote on last edited by
          #4

          Bonsoir et merci SGaist pour ta réponse,
          effectivement l'image arrive codée en base64 dans le delegate, elle provient d'un fichier de contacts en *.vcf dont j'extrais les lignes de balise "PHOTO".
          Je vais la décoder avant d'entrer dans le delegate , comme tu me l'explique, et je reposterai pour donner le résultat.
          merci encore.
          polenord

          P 1 Reply Last reply
          0
          • P polenord

            Bonsoir et merci SGaist pour ta réponse,
            effectivement l'image arrive codée en base64 dans le delegate, elle provient d'un fichier de contacts en *.vcf dont j'extrais les lignes de balise "PHOTO".
            Je vais la décoder avant d'entrer dans le delegate , comme tu me l'explique, et je reposterai pour donner le résultat.
            merci encore.
            polenord

            P Offline
            P Offline
            polenord
            wrote on last edited by
            #5

            @polenord
            bonjour,
            j'ai trouvé et corrigé mon erreur.
            l'image que je récupérai dans le delegate n'était pas conforme au format base64, il manquait le caractère "/" en début de chaîne.
            voici mon code corrigé :

            void pixDelegate::setEditorData( QWidget *editor, const QModelIndex &index ) const
            {
                if (index.column() != 3)
                {
                    QItemDelegate::setEditorData(editor, index);
                    return;
                }.
                QLabel *label = qobject_cast<QLabel *>(editor);
                if (label)
                {
                    QPixmap pixmap;
                    QVariant imageData = index.data();
                    pixmap.loadFromData(QByteArray::fromBase64(imageData.toByteArray()));
                    label->setPixmap(pixmap);
                }
            }
            

            tout marche bien,
            merci à tous mes lecteurs,
            polenord

            1 Reply Last reply
            0

            • Login

            • Login or register to search.
            • First post
              Last post
            0
            • Categories
            • Recent
            • Tags
            • Popular
            • Users
            • Groups
            • Search
            • Get Qt Extensions
            • Unsolved