web-dev-qa-db-fra.com

Comment définir une image sur QPushButton?

Je souhaite définir une image sur QPushButton et la taille de QPushButton devrait dépendre de la taille de l'image. Je suis capable de faire cela en utilisant QLabel, mais pas avec QPushButton.

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

61
greshi Gupta

Ce que vous pouvez faire est d’utiliser un pixmap en tant qu’icône puis de placer cette icône sur le bouton.

Pour vous assurer que la taille du bouton sera correcte, vous devez modifier l’icône en fonction de la taille de la pixmap.

Quelque chose comme ça devrait marcher:

QPixmap pixmap("image_path");
QIcon ButtonIcon(pixmap);
button->setIcon(ButtonIcon);
button->setIconSize(pixmap.rect().size());
56
Jérôme
QPushButton *button = new QPushButton;
button->setIcon(QIcon(":/icons/..."));
button->setIconSize(QSize(65, 65));
35

Vous voudrez peut-être aussi 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());
9
Jonathan

Vous pouvez aussi utiliser:

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

Note : Ceci est un peu hacky. Vous ne devriez utiliser ceci qu'en dernier recours. Les icônes doivent être définies à partir du code C++ ou Qt Designer.

7
Iuliu

Ceci est ancien mais reste utile, Entièrement testé avec QT5.3.

Soyez prudent, exemple concernant le chemin des ressources:

Dans mon cas, j'ai créé un répertoire de ressources nommé "Ressources" dans le projet de répertoire source.

Le dossier "ressources" contient des images et des icônes. Ensuite, j'ai ajouté un préfixe "Images" dans Qt. Le chemin de la pixmap devient:

QPixmap pixmap (":/images/Ressources/icone_pdf.png");

JF

2
JFP74

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

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 );
    }
};
2
Frank Osterfeld

Vous pouvez le faire dans Qt Designer. Cliquez simplement sur votre bouton puis allez dans la propriété icon puis choisissez votre fichier image.

0
Nemeth Attila

Il suffit d'utiliser ce code

QPixmap pixmap("path_to_icon");
QIcon iconBack(pixmap);

Notez que: "path_to_icon" est le chemin de l’icône image dans le fichier .qrc de votre projet. Vous pouvez trouver comment ajouter un fichier .qrcici

0
dqthe
icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap(":/images/icon.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.pushButton.setIcon(icon)
0
Daniel I. Cruz