Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2495 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [Resolu][Qt] maximiser la taille d'une icone sur un bouton

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Resolu][Qt] maximiser la taille d'une icone sur un bouton

n°2103375
shaoyin
Posté le 26-09-2011 à 16:29:10  profilanswer
 

Bonjour,
 
J'essaie de créer un widget personnalité sur la base d'un QPushButton, configuré comme "checkable". Le bouton ne comporte pas de libellé, mais juste une icone.
L'idée est de changer l'icone associée selon l'état "enfoncé" du bouton.
 
Au niveau du constructeur, je passe 2 QPixmap correspondant aux deux icones :

Code :
  1. class Bouton2Etats : public QPushButton
  2. {
  3.     Q_OBJECT
  4. public:
  5.     explicit            Bouton2Etats(QPixmap , QPixmap , QWidget *parent = 0);
  6.                         ~Bouton2Etats();
  7. private slots:
  8.     void                changementEtat( bool );
  9. private:
  10.     QPixmap             m_icon_actif;
  11.     QPixmap             m_icon_inactif;
  12. };


 
Chaque fois que l'état du bouton change, j'appelle la fonction "scaled" sur la QPixmap avant de la réaffecter au bouton via "setIcon" :
 

Code :
  1. Bouton2Etats::Bouton2Etats(QPixmap p_icon_actif , QPixmap p_icon_inactif , QWidget *parent) :
  2.     QPushButton(parent) , m_icon_actif( p_icon_actif ) , m_icon_inactif ( p_icon_inactif )
  3. {
  4.     setCheckable(true);
  5.     setChecked(false);
  6.     m_icon_actif.scaled(size());
  7.     setIcon(QIcon(m_icon_actif));
  8.     connect( this , SIGNAL(clicked( bool )) , this , SLOT( changementEtat( bool ) ) );
  9. }
  10. void Bouton2Etats::changementEtat( bool p_checked ) {
  11.     if ( p_checked == true ) {
  12.         m_icon_inactif.scaled(size());
  13.         setIcon(QIcon(m_icon_inactif));
  14.     } else {
  15.         m_icon_actif.scaled(size());
  16.         setIcon(QIcon(m_icon_actif));
  17.     }
  18. }


 
mais ca ne marche pas...
 
Dans mon slot "changementEtat", j'avais essayé d'appeler setIconSize(size()). Dans ce cas, l'icone change bien de taille, mais ça ne remplit pas complètement le bouton.
 
D'où ma question : comment ajuster la taille de l'icone pour qu'elle occupe tout l'espace du bouton ? Je précise aussi que j'utilise un gestionnaire de disposition pour le bouton, et par conséquent sa taille n'est pas fixe.
 
Merci d'avance !


Message édité par shaoyin le 26-09-2011 à 17:14:33
mood
Publicité
Posté le 26-09-2011 à 16:29:10  profilanswer
 

n°2103382
GrosBocdel
Posté le 26-09-2011 à 16:36:46  profilanswer
 

parce que m_icon_inactif.scaled(size()) ne modifie pas m_icon_inactif mais te renvoie un autre QPixmap;
donc:
 
QPixmap toto = m_icon_inactif.scaled(size(),Qt::IgnoreAspectRatio);
setIcon(QIcon(toto));
 
ou un truc à peu près comme ça
 
 
 

n°2103387
shaoyin
Posté le 26-09-2011 à 17:02:21  profilanswer
 

Merci ! Mais si je m'en tiens à ta solution, l'icone reste toute petite dans le bouton. Du coup, j'ai complété avec un appel du genre :
 
setIconSize( toto.size() );
 
... et là, ca marche beaucoup mieux !
 
Merci encore !


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [Resolu][Qt] maximiser la taille d'une icone sur un bouton

 

Sujets relatifs
Debugger Qtinitialiser les zones de saisies en clickan sur bouton
[BATCH] récupération taille total disque[Qt] Modifier la taille d'une image
Bug du bouton J'aime Facebook ?Imposer une police et une taille de caractères ?
Intégration tableau et bouton paypal[Qt] Utilisation de telnet dans une application
[Qt] Probleme avec la librairie Qwt 
Plus de sujets relatifs à : [Resolu][Qt] maximiser la taille d'une icone sur un bouton


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR