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

Qt Discussion :

Problème pour ajouter une icône à l'exécutable


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    dev
    Inscrit en
    Avril 2010
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Avril 2010
    Messages : 53
    Par défaut Problème pour ajouter une icône à l'exécutable
    Bonjour,

    J'utilise Qt 4.6 avec le compilateur VS2005 SP1 et le plugin Qt visual add-in sous W7. Je n'utilise pas qmake et encore moins de fichier .pro.

    J'ai ajouté une icône sous visual par l'intermédiaire du fichier .rc qui est unique et qui devrait normalement être utilisée comme icône de l'application.

    J'ai également ajouté cette icône via Qt Designer dans le fichier .qrc que j'ai associé à ma fenêtre principale via setWindowIcon(). Lorsque je fais une prévisualisation de la fenêtre principale de mon application, je retrouve bien l'icône (en haut à gauche).

    Après compilation, je retrouve bien l'icône dans l'explorer windows par contre à l'exécution c'est l'icone par défaut qui est présente à la fois dans la barre des tâches ainsi qu'en haut à gauche.

    J'ai bien essayé de changer l'icône à l'exécution par un QApplication::setWindowIcon() mais en vain...
    J'ai également retiré l'icône du fichier .qrc, laissant ainsi visual gérer complétement l'icone de l'application mais même résultat...

    Quelqu'un aurait des pistes ??

    Merci d'avance

  2. #2
    Membre averti
    Profil pro
    dev
    Inscrit en
    Avril 2010
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Avril 2010
    Messages : 53
    Par défaut
    J'ai l'impression d'avoir à peu près tout essayé
    Personne n'a d'idée ??

  3. #3
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Par défaut
    Salut,

    D'abord, je pense que tu as peu de réponse car ton environnement est un peu particulier.

    Voici quelques idées en vrac pour t'aider à progresser :
    1) As tu vérifié le contenu de ton .qrc ? Est ce qu'il est conforme à ce qui est attendu ? As tu essayé d'afficher ton image dans un QLabel par exemple (il se peut que ce soit juste un problème de mauvais chargement de l'image via le système de ressources). Essaie avec une image hors fichier de ressource.

    2) As tu essayé un QWidget::setWindowIcon sur une de tes fenêtres directement dans le code (c'est peut être un problème de designer).

    3) Peux tu nous donner plus d'infos sur ta façon de procéder pour compiler ? Tu utilises directement des makefiles ? Tu appelles directement les éxécutables Qt ? As tu bien pensé à utiliser le rcc.exe ?

    G.

  4. #4
    Membre averti
    Profil pro
    dev
    Inscrit en
    Avril 2010
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Avril 2010
    Messages : 53
    Par défaut
    Merci pour tes remarques, cela m'a permis de valider quelques points

    1) J'ai bien vérifier le fichier .qrc, je retrouve la liste des mes icônes au format .png (qui s'affichent bien) ainsi que l'icône dédiée à l'application au format .ico.
    En essayant d'afficher l'icône sur un QLabel, je me suis aperçu que le format .ico ne devait pas être supporté par Qt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      QPixmap p("D:/qtdemo.ico");
      if (!p.isNull()) // p is null
        ui->label->setPixmap(p);
    J'ai eu la confirmation ici:
    http://qt.developpez.com/doc/latest/...p.html#details
    Mais cela me semble pour le moins étrange que Qt ne gère pas en natif le format .ico
    Cela passe effectivement si j'utilise le format .png. Ce n'est donc pas un problème lié à la lecture du fichier de ressource.

    2) oui et ça ne fonctionne pas pour les même raisons.

    3) Je n'utilise aucun makefile mais directement les exécutables Qt en prebuild event. A vrai dire, sous visual, je pensais que tout le monde faisait comme ça

    Conclusion Suis je contraint de transformer les fichiers .ico en .png ? (ou autres)

  5. #5
    Inactif  


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

    Informations professionnelles :
    Secteur : Santé

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

    As-tu lu la doc suivante pour l'icône de l'application : http://qt.developpez.com/doc/latest/appicon.html ?
    A priori, il faut créer un fichier de ressource contenant ton icône et ayant le même nom que l'application.

    Pour utiliser une image .ico, il faut charger le plugin adéquate "qico" : http://qt.developpez.com/doc/latest/...static-plugins (je ne sais pas pourquoi le format ico est dans un plugin, peut être pour ne pas surcharger l'application avec des formats d'images peu utilisé ou plateforme-spécifique)

  6. #6
    Membre averti
    Profil pro
    dev
    Inscrit en
    Avril 2010
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Avril 2010
    Messages : 53
    Par défaut
    Citation Envoyé par gbdivers Voir le message
    As-tu lu la doc suivante pour l'icône de l'application : http://qt.developpez.com/doc/latest/appicon.html ?
    J'avais déjà lu cette doc mais j'étais passé à côté de la dernière ligne

    If you do not use qmake, the necessary steps are: first, run the rc program on the .rc file, then link your application with the resulting .res file.
    Ce que j'ai testé en ajoutant un build event dans le fichier .qrc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    START /D "$(FrameworkSDKDir)" /WAIT /B RC.exe /r $(InputDir)MyAppli.rc
    et linker avec le fichier .res résultant. Mais comme mentionné dans la doc, le but de cette opération n'est que d'ajouter une icône dans l'explorateur window mais pas à l'exécution de l'appli Or, j'avais déjà ça juste en utilsant un fichier .rc. Je ne comprend pas très bien la nécessité de cette étape.

    Et effectivement, je trouve ça un peu lourd de passer par un plugin pour charger une unique icône.

    Citation Envoyé par Gulish Voir le message
    D'abord tout dépend du nombre de fichiers que tu as à transformer. Si tu en as peu, c'est sans doute la meilleure solution.
    Je n'ai que l'icône principale de l'appli. C'est donc ce que j'ai fait pour l'instant mais je suis pointilleux et je préfère utiliser la bonne méthode

    Citation Envoyé par Gulish Voir le message
    Une précision : l'icone qui apparait dans le coin de la fenetre et dans la barre des taches est l'icone de ton widget principal (celui de l'application est uniquement utilisé dans l'explorateur du système de fichier)
    Je pensais pouvoir trouver une méthode pour faire un setWindowIcon() en utilisant l'icône incluse dans le fichier .rc (ou .res). Or dans ce fichier, l'icône est probablement toujours au format .ico, il me faudra donc quand même utiliser le plugin. Si c'est le cas, je préfère encore faire une duplication du fichier .ico en .png.

    Je me suis peut-être mal exprimé, pour l'icône dans l'explorer c'est bon mais je cherchais un moyen d'utiliser cette même icône, sans la dupliquer ou sans utiliser de plugin.

  7. #7
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Par défaut
    Conclusion Suis je contraint de transformer les fichiers .ico en .png ? (ou autres)
    D'abord tout dépend du nombre de fichiers que tu as à transformer. Si tu en as peu, c'est sans doute la meilleure solution.

    Sinon, il y a des plugins images fournis avec Qt, qui permettent de gérer les fichiers .ico . Par contre, vu ton environnement, je ne sais pas trop comment faire pour les utiliser.

    D'autres te renseigneront surement mieux que moi sur ce sujet.

    ---Edit----

    As-tu lu la doc suivante pour l'icône de l'application : http://qt.developpez.com/doc/latest/appicon.html ?
    A priori, il faut créer un fichier de ressource contenant ton icône et ayant le même nom que l'application.
    Après compilation, je retrouve bien l'icône dans l'explorer windows par contre à l'exécution c'est l'icone par défaut qui est présente à la fois dans la barre des tâches ainsi qu'en haut à gauche.
    Une précision : l'icone qui apparait dans le coin de la fenetre et dans la barre des taches est l'icone de ton widget principal (celui de l'application est uniquement utilisé dans l'explorateur du système de fichier). Si tu as plusieurs "fenêtres principales" (sans parent), alors tu auras plusieurs objets dans ta barre des taches (avec des icones différentes).


    G.

  8. #8
    Membre averti
    Profil pro
    dev
    Inscrit en
    Avril 2010
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Avril 2010
    Messages : 53
    Par défaut
    Citation Envoyé par Gulish Voir le message
    Une précision : l'icône qui apparait dans le coin de la fenêtre et dans la barre des taches est l'icône de ton widget principal (celui de l'application est uniquement utilisé dans l'explorateur du système de fichier).
    Je pensais donc faire un setWindowIcon() dans le constructeur de ma QMainWindow en utilisant celle de l'application

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setWindowIcon(QApplication::windowIcon());
    Mais QApplication et QMainWindow doivent être la même fenêtre car si je fais ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QApplication::setWindowIcon(icon));
    cela change l'icône de QMainWindow

Discussions similaires

  1. [XL-2007] Problème dans une macro pour ajouter une date
    Par INFINITY100 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/05/2015, 20h28
  2. [WD16] problème pour ajouter une ligne dans la table
    Par T1929D dans le forum WinDev
    Réponses: 3
    Dernier message: 02/08/2013, 22h39
  3. Réponses: 7
    Dernier message: 25/01/2012, 14h25
  4. Des problèmes pour ajouter valeur dans une ArrayList
    Par Fused dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 07/11/2008, 16h28
  5. Réponses: 3
    Dernier message: 29/08/2003, 10h57

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