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 :
- class Bouton2Etats : public QPushButton
- {
- Q_OBJECT
- public:
- explicit Bouton2Etats(QPixmap , QPixmap , QWidget *parent = 0);
- ~Bouton2Etats();
- private slots:
- void changementEtat( bool );
- private:
- QPixmap m_icon_actif;
- QPixmap m_icon_inactif;
- };
|
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 :
- Bouton2Etats::Bouton2Etats(QPixmap p_icon_actif , QPixmap p_icon_inactif , QWidget *parent) :
- QPushButton(parent) , m_icon_actif( p_icon_actif ) , m_icon_inactif ( p_icon_inactif )
- {
- setCheckable(true);
- setChecked(false);
- m_icon_actif.scaled(size());
- setIcon(QIcon(m_icon_actif));
- connect( this , SIGNAL(clicked( bool )) , this , SLOT( changementEtat( bool ) ) );
- }
- void Bouton2Etats::changementEtat( bool p_checked ) {
- if ( p_checked == true ) {
- m_icon_inactif.scaled(size());
- setIcon(QIcon(m_icon_inactif));
- } else {
- m_icon_actif.scaled(size());
- setIcon(QIcon(m_icon_actif));
- }
- }
|
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