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 :

QGraphicsPixmapItem non affiché pour l'application déployé [Graphics View]

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 16
    Points : 18
    Points
    18
    Par défaut QGraphicsPixmapItem non affiché pour l'application déployé
    Bonjour,

    Sur ma station de travail mon application fonctionne parfaitement. Que ce soit en la lançant depuis QtCreator, ou directement depuis l'executable dans un dossier contenant les dll.

    Mais lorsque que je deploi mon application sur un autre ordinateur (ou Qt n'est pas installé) mon objet QGraphicsPixmapItem n'est pas affiché.

    Le bout de code en question :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    this->image = new QGraphicsPixmapItem(QPixmap(urlFile));
    image->setZValue(-5000.0);
    this->scene->setSceneRect(QRectF(0, 0, image->pixmap().width() + 200, image->pixmap().height() + 200));
    scene->addItem(image);
    this->view->setMaximumWidth(image->pixmap().width() + 200);
    view->setMaximumHeight(image->pixmap().height() + 200);
     
    qreal centerX = (scene->width() / 2.0) - (image->pixmap().width() /2.0);
    qreal centerY = (scene->height() / 2.0) - (image->pixmap().height() /2.0);;
    image->setOffset(QPointF(centerX, centerY));
    scene objet de la classe QGraphicsScene
    view objet de la classe QGraphicsView

    J'espère que vous pourrez m'aider.

  2. #2
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 620
    Points
    15 620
    Par défaut
    Bonjour

    Si ça compile et s'exécute sur les différentes plateformes, ce n'est pas un problème de codage ou de linkage.
    Probablement un problème de chargement de la pixmap. Vérifie le chemin (attention aux minuscule/majuscule sur les différentes plateformes, aux chemins relatifs/absolus, etc.) et que l'image soit bien chargé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    qDebug() << urlFile << QPixmap(urlFile);
    Bon courage

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 16
    Points : 18
    Points
    18
    Par défaut
    Tout d'abord merci de ta réponse.

    L'application est déployé sur Windows 7.

    Je viens de remplacer les / par des \ dans mes path mais ça ne change rien.
    Voila les logs que j'ai obtenu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    2011-01-05T14:53:39: urlFile : C:\Users\poleinfo\Desktop\img3.jpeg
    2011-01-05T14:53:39: urlFolder : C:\Users\poleinfo\Desktop
    2011-01-05T14:53:39: pixmap.width:0
    2011-01-05T14:53:39: pixmap.height:0
    2011-01-05T14:53:39: viewMaxWidth:200
    2011-01-05T14:53:39: viewMaxHeight:200
    Donc en effet la pixmap ne semble pas être chargé (pixmap.width:0).

    Par contre j'ai une erreur de compil pour (avec include de QDebug et QGlobal) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    qDebug() << QPixmap(urlFile);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ambiguous overload "operator<<"
    Un detail... les .png sont chargé, mais pas les .gif, ni les jpg/jpeg

    EDIT: Les principaux formats d'images de la doc ne sont pas disponible. Serais-ce une dll manquante ?

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 16
    Points : 18
    Points
    18
    Par défaut
    Trouvé !

    En effet il fallait rajouter les dll suivante : qgif4.dll, qjpeg4.dll
    Ces dll sont des plugins pour qt, on les trouve dans QTDIR/qt/plugins/imageformats
    Pour que l'application déployé puisse utiliser ces formats il faut copier les dll dans un dossier imageformats/ et mettre ce dossier à la racine de l'executable.

    Une question me vient à l'esprit, est-il possible d'intégrer ces plugins à l'executable autrement qu'en le compilant en static ?

  5. #5
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 620
    Points
    15 620
    Par défaut
    Il existe une entrée dans la FAQ sur ce point : Comment déployer une application Qt sous Windows ? (mais effectivement, ça ne précise pas spécifiquement que jpeg et gif sont sous forme de plug-in)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 22/06/2015, 10h40
  2. [Vxi3] Variable non affichée pour réaliser un palmarès
    Par Aurel5639 dans le forum Deski
    Réponses: 3
    Dernier message: 08/06/2011, 19h05
  3. Réponses: 3
    Dernier message: 11/08/2008, 10h27
  4. Réponses: 2
    Dernier message: 12/12/2006, 17h42
  5. Réponses: 8
    Dernier message: 22/05/2006, 09h25

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