107 votes

Comment définir une image sur un QPushButton ?

Je veux mettre une image sur QPushButton et la taille de QPushButton devrait dépendre de la taille de l'image. Je suis en mesure de le faire en utilisant QLabel mais pas avec QPushButton .

Donc, si quelqu'un a une solution, alors s'il vous plaît aidez-moi.

3 votes

Il y a deux façons de définir l'image d'un bouton dans Qt, la façon programmatique de définir l'image, qt-articles.blogspot.com/2010/06/ à partir de la feuille de style, comment l'image est définie, qt-articles.blogspot.com/2010/06/

0 votes

C'est génial... ça marche bien... merci beaucoup...

0 votes

Vous êtes le bienvenu :) si vous pensez que la réponse est correcte, veuillez la marquer comme telle afin qu'elle soit utile à d'autres personnes qui rencontrent le même problème.

79voto

Jérôme Points 8970

Ce que vous pouvez faire, c'est utiliser un pixmap comme icône, puis placer cette icône sur le bouton.

Pour être sûr que la taille du bouton sera correcte, vous devez redimensionner l'icône en fonction de la taille du pixmap.

Quelque chose comme ceci devrait fonctionner :

QPixmap pixmap("image_path");
QIcon ButtonIcon(pixmap);
button->setIcon(ButtonIcon);
button->setIconSize(pixmap.rect().size());

7 votes

Je sais que c'est vieux, mais j'ai fait cela, et l'icône du bouton poussoir est toujours celle par défaut. Je n'obtiens aucune erreur et tous mes fichiers de ressources semblent être chargés et mes chemins sont bons. Pourquoi cela ne fonctionne-t-il pas pour moi ?

59voto

        QPushbutton *button = new QPushbutton;
        button->setIcon(QIcon(<imagePath>));
        button->setIconSize(QSize(65,65));

11voto

Jonathan Leaders Points 317

Vous pouvez également définir la taille du bouton.

QPixmap pixmap("image_path");
QIcon ButtonIcon(pixmap);
button->setIcon(ButtonIcon);
button->setIconSize(pixmap.rect().size());
button->setFixedSize(pixmap.rect().size());

11voto

Iuliu Points 3721

Vous pouvez également utiliser :

button.setStyleSheet("qproperty-icon: url(:/path/to/images.png);");

Note : C'est un peu bidon. Vous ne devez l'utiliser qu'en dernier recours. Les icônes doivent être définies à partir de C++ ou Qt Designer .

6voto

Frank Osterfeld Points 13125

Je ne pense pas que vous puissiez définir des images de taille arbitraire sur l'une des classes de boutons existantes. Si vous voulez une image simple se comportant comme un bouton, vous pouvez écrire votre propre sous-classe QAbstractButton, quelque chose comme :

class ImageButton : public QAbstractButton {
Q_OBJECT
public:
...
    void setPixmap( const QPixmap& pm ) { m_pixmap = pm; update(); }
    QSize sizeHint() const { return m_pixmap.size(); }
protected:
    void paintEvent( QPaintEvent* e ) {
        QPainter p( this );
        p.drawPixmap( 0, 0, m_pixmap );
    }
};

0 votes

Merci de m'avoir répondu Pourriez-vous m'aider en me montrant comment mettre en œuvre ce code en utilisant QPushButton au lieu de QAbstractButton. Comme mes exigences sont d'utiliser QPushButton. donc, plz m'aider.

0 votes

Comme je l'ai dit, je ne pense pas qu'il y ait une méthode appropriée. Si tant est que QStyle et les feuilles de style puissent vous aider. Jetez-y un coup d'œil.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X