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 :

Icône sur un bouton


Sujet :

Qt

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 825
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 825
    Par défaut Icône sur un bouton
    Bonjour à tous,


    J'ai fait une boîte de dialogue avec le designer qui comporte l'intégration de quelques images (une image de fond et deux icônes sur des bouton).

    A l'exécution, aucune image n'apparaît.

    uic me génère ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    QIcon icon;
    icon.addPixmap(QPixmap(QString::fromUtf8(":/Images/bmpValider16x16.bmp")), QIcon::Normal, QIcon::Off);
    cmdOk->setIcon(icon);
    Après avoir vu quelques exemple, j'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cmdOk->setIcon(QIcon(":/Images/bmpValider16x16.bmp"));
    Mais rien à faire, toujours pas d'image. Mes images sont correctement dans le sous répertoire "Images" du répertoire dans lequel se trouve le .h généré par uic.

    Faut-il faire quelque chose pour avoir les images ?


    Merci beaucoup,

    A bientôt

  2. #2
    Membre expérimenté Avatar de MacPro
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 367
    Par défaut
    Salut, est-ce que ta boîte de dialogue hérite de QDialog ?
    Dans ce cas, est-ce que les boutons auxquels tu essaies d'affecter une icône font partie d'une QDialogButtonBox ?
    Si oui, alors c'est plus compliqué pour affecter des icônes aux boutons OK, ignorer, cancel, done ...
    Dans la doc :
    http://qt.developpez.com/doc/4.4/stylesheet-reference/
    Whether the buttons in a QDialogButtonBox show icons
    If this property is set to 1, the buttons of a QDialogButtonBox show icons; if it is set to 0, the icons are not shown.

    See the List of Icons section for information on how to set icons.

    QDialogButtonBox { dialogbuttonbox-buttons-have-icons: 1; }
    Note: Styles defining this property must be applied before the QDialogButtonBox is created; this means that you must apply the style to the parent widget or to the application itself.
    Si ce sont des simples boutons, alors dans l'inspecteur de proprietés de Qt Designer tu as la propriété "icon", ensuite t'as un bouton sur cette ligne, tu le clique et tu prends ton icône. Il te faut au préalable avoir ton fichier de ressources correct. Si ce n'est pas le cas, menu tools>ressources browser, puis dans la fenêtre (le dock en fait) qui s'est ouvert, y'a un crayon à côté d'une flèche. Tu cliques sur ce crayon, dans la nouvelle fenêtre qui s'est ouverte, en bas de la colonne gauche, tu choisis soit New ressource file, soit open ressource file si tu en as déjà une.
    si tu fais new, tu creeras un fichier .qrc. Ensuite, sur la colonne de droite, tu feras des prefix, en gros, des reperes, genre prefixe images_bonhomme, prefixe image_maison.... Ensuite, sur chacun des prefixes, tu cliques le bouton pour ajouter des fichiers (tes images dans ton cas).
    Dès que c'est tout fait, tu cliques la fleche verte en rond pour réactualiser tes ressources (mais ce n'est pas utile normalement), et tu retournes sur la propriété icon des boutons que tu veux modifier.

  3. #3
    Membre expérimenté Avatar de MacPro
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 367
    Par défaut
    C'est plus propre de créer un dossier 'Ressources' dans ton projet et de mettre dedans tes ressources.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 825
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 825
    Par défaut
    Merci pour cette réponse.


    Salut, est-ce que ta boîte de dialogue hérite de QDialog ?
    Donc le uic m'a généré un fichier CUiDlgOpen.h contenant une classe Ui_CUiDlgOpen qui n'hérite de rien.

    Moi j'ai fait une classe CDlgOpen :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    class CDlgOpen : public QDialog, private Ui::CUiDlgOpen
    {
    public:
        CDlgOpen(QWidget* pParent = 0);
    };
    Puis je l'ai instancié de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    QApplication app(argc, argv);
     
    CDlgOpen DlgOpen;
    DlgOpen.show();
     
    return app.exec();
    Dans ce cas, est-ce que les boutons auxquels tu essaies d'affecter une icône font partie d'une QDialogButtonBox ?
    Non ce sont des QPushButton, j'ai cherché les QDialogButtonBox dans le designer, mais je les ai pas trouvé.

    Et pour appliquer l'icône au bouton, j'ai suivit la même procédure que tu as décrit, autant en sélectionnant une image dans mes ressources qu'en sélectionnant une image via un fichier.

    Le preview dans le designer est nikel.

    Ma boîte de dialogue possède également une image de fond. Voici le code généré :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CUiDlgOpen->setStyleSheet(QString::fromUtf8("background-image: url(:/Images/back.bmp);"));
    Mais toujours pas d'image non plus.

    Je vais essayer en changeant le format des images.


    Merci

  5. #5
    Membre expérimenté Avatar de MacPro
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 367
    Par défaut
    class CDlgOpen : public QDialog, private Ui::CUiDlgOpen
    {
    public:
    CDlgOpen(QWidget* pParent = 0);
    };
    est-ce que tu as pensé à appeler la fonction setupUi() héritée de Ui::CUiDlgOpen ?
    Dans ton constructeur, normalement c'est la première chose que tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CDlgOpen::CDlgOpen(QDialog *pParent) : QDialog(pParent)
    {
          setupUi(this);
     
          //Ensuite tout le reste de ton code
     
    }

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 825
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 825
    Par défaut
    Oui j'ai fait exactement comme ça.

    J'ai testé avec un autre format d'image, ça n'a rien donné de plus.

    Par contre j'ai remarqué quelque chose sur l'instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    icon.addPixmap(QPixmap(QString::fromUtf8("Images/bmpValider16x16.bmp")), QIcon::Normal, QIcon::Off);
    En passant la souris sur "icon", je vois "d=0x0000000" alors que si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    QIcon icon("Images/bmpValider16x16.bmp")
    le d est positionné, mais toujours pas d'images pour autant :s

  7. #7
    Membre expérimenté Avatar de MacPro
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 367
    Par défaut
    bon ben ... essaie en mettant le chemin complet de ton image alors

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QIcon icon("C:\\Documents and Settings\\mli\\Bureau\\safariPC.png");
    par exemple

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 825
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 825
    Par défaut
    Ha en fait quand le chemin du fichier est positionné par uic, il suppose qu'on est dans le répertoire du fichier .h

    Mais en fait la racine est le répertoire du projet.

    Ainsi si je met
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "Images/fichier.bmp"
    ça fonctionne pas mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "IHM/Images/fichier.bmp"
    ça passe.


    Comment faut-il s'organiser au niveau des fichiers et du fichier de resource pour intégrer tout ça ensuite dans Visual Studio ?

Discussions similaires

  1. [VS2010] - Icône sur un bouton
    Par Nicolas Bauland dans le forum MFC
    Réponses: 1
    Dernier message: 13/10/2010, 17h19
  2. Réponses: 1
    Dernier message: 02/06/2009, 23h09
  3. Placement du texte sur un bouton avec une icône
    Par julie4207 dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 23/05/2009, 14h28
  4. [Flash MX] Action sur un bouton
    Par WriteLN dans le forum Flash
    Réponses: 9
    Dernier message: 20/10/2003, 14h01

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