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 :

Utilisation d'icônes standard dans une barre d'outils

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 327
    Par défaut Utilisation d'icônes standard dans une barre d'outils
    Bonjour,

    Je cherches à créer une barre d'outil avec des icones.

    voici le code de ma barre d'outil :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    QToolBar* toolbar;
    toolbar=addToolBar("test");
    QAction* test=toolbar->addAction("test",this,SLOT(sortie)));
    Ceci affiche "test" dans une barre d'outil et fonctionne.

    Reste à gérer l’icône:

    Pour mon propre icône j'ai trouvé ( je n'ai pas testé ):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    QPixmap essai("essai.png");
    toolbar->addAction(QIcon(essai),"test");
    maintenant pour les icônes standard je présumes que je dois remplacer QIcon(essai) par QIcon(nom_de_l_icone_par_defaut)

    J'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    toolbar=addToolBar(QIcon(SP_TrashIcon),"test");
    j'ai une erreur de compilation : "'SP_TrashIcon was not declared in this scope"

    J'ai ajouté QStyle en include
    j'ai essayé aussi avec QStyle::SP_TrashIcon, cela ne fonctionne pas non plus.

    Merci pour votre aide.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  2. #2
    Membre éprouvé
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Par défaut
    Si tu regardes la doc, tu verras que QIcon n'a aucun constructeur qui accepte en argument ce que tu essayes de lui donner. Tu ne peux donc pas construire ton objet de cette façon.

    Dans la doc de QStyle tu trouves la fonction standardicon, qui sert justement à créer un objet QIcon comme tu souhaites le faire. Tu dois donc créer un objet QStyle puis appeler cette fonction à la place de ton appel au constructeur de QIcon.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    QStyle style;
    toolbar=addToolBar(style.standardicon(SP_TrashIcon),"test");

  3. #3
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 327
    Par défaut ça ne marche pas ...
    Dans les deux cas j'ai l'erreur suivante à la compilation :

    SP_TrashIcon was not declared in this scope

    NE me manquerai t'il pas des includes ?

    j'ai QMenu, QmenuBar, QToolBar, QStyle ( + d'autres non necessaire à ce bout de code )

    Par ailleurs j'ai remplacé style.standardicon par style.StandardIcon, j'ai une erreur de moins à la compilation.

    Si je regardes la doc il n'est pas clair pour moi que ne je peux pas utiliser qIcon comme je l'ai fait, je suis débutant.

    Merci pour votre aide.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  4. #4
    Membre éprouvé
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Par défaut
    Autant pour moi j'ai mal copié le code !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    QStyle style;
    toolbar=addToolBar(style.standardIcon(QStyle::SP_TrashIcon),"test");
    Pour ces lignes là tu ne devrais à avoir à inclure que QToolBar et QStyle.
    (+ QMenu, QmenuBar pour le reste de ton code j'imagine)

  5. #5
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 327
    Par défaut toujours probs de compilation
    Je suis désolé de vous enquiquiner mais c encore pas bon.

    A la compilation j'ai l'erreur ;
    cannot allocate an object of abstract type 'QStyle'

    J'ai ensuite plein de lignes note:because the following virtual functions are pure within 'QStyle', ça je l'avais déjà mais c'est marqué note, je me suis dit que c'était inutile de le préciser. Mon prob est lié je pense à mon include QStyle

    D'après ce que j'ai trouvé sur cannot allocate an object of abstract type 'QStyle', il s'agit de prob lié à l'héritage et à des classes virtuelles, moi je n'utilises pas de classes virtuelles en dehors de la "boite noire" QT Ca me parait bizarre que QT ne soit pas en mesure de gérer ça correctement donc c'est moi qui merde qq part.

    les includes que j'utilise sont : QApplication, QTGui, QLabel, QMainWindow,QMenu, QMenuBar, QToolBar,QCloseEvent, QFile,et QStyle

    Je penses que mon prob est plus lié à C++ qu'à QT vu ce que j'ai trouvé sur le net, mais j'ai ce prob depuis que je travailles sur ma partie barre d'outil donc lié à mes include QStyle, QToolbar que je n'utilisais pas avant.

    Je n'ai pas suffisamment de compétence en C++ pour corriger mon prob. En fait si je pouvais développer en C avec QT plutôt qu'en C++ ça m'arrangerait mais ça pas l'air d'être possible, j'ai rien contre C++ sauf que c'est chaud pour avancer en galérant en C++ et en QT. Je sais que je suis hors sujet en parlant C++ mais si qq1 pouvait m'aider et/ou me donner un exemple complet opérationnel pour créer une barre d'outil avec les icônes standard ce serait sympa, en attendant je vais essayer avec mes propres icônes, ce qui me permettra d'apprendre la partie gestion ressources.

    Je peux fournir mon code si besoin ( 135 lignes, ça commences à faire beaucoup à lire donc je le mettrais si indispensable, je suis en train de développer un éditeur de texte, afin d'apprendre QT il n'a donc pas d’intérêt pour qq1 d'autre que moi, et même pour apprendre, vu mon niveau ... )

    Merci pour votre aide, bonjour la galère juste pour afficher une barre d'outil, mais faut bien apprendre ...
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  6. #6
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2011
    Messages : 20
    Par défaut
    Bonjour,
    Pour ton problème de "cannot allocate an object of abstract type 'QStyle'", il s'agit tout simplement d'instancier un QStyle dynamiquement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    QStyle* style;
    QIcon icon=style->standardIcon(QStyle::SP_TrashIcon);
    A +

    EDIT : oula mais oui j'écris n'importe quoi moi (il est tôt )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    QIcon icon=qApp->style()->standardIcon(QStyle::SP_TrashIcon)
    QToolBar toolbar;
    toolbar.addAction(icon,"test");
    Mieux! thx troudhyl

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

Discussions similaires

  1. création d'une liste dans une barre d'outils
    Par ririrourou dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 11/09/2008, 15h39
  2. [COM] utiliser la librairie standard dans une dll COM
    Par kacedda dans le forum Visual C++
    Réponses: 5
    Dernier message: 13/03/2008, 14h57
  3. Alignement dans une barre d'outils
    Par Mysti¢ dans le forum wxPython
    Réponses: 1
    Dernier message: 19/06/2007, 15h54
  4. [Sources]Créer un bouton dans une barre d'outils
    Par ouskel'n'or dans le forum Contribuez
    Réponses: 2
    Dernier message: 19/03/2007, 12h32
  5. Un menu dans une barre d'outils Swing : possible ?
    Par nicolas54 dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 28/03/2006, 07h54

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