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.
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());
QPushButton *button = new QPushButton;
button->setIcon(QIcon(":/icons/..."));
button->setIconSize(QSize(65, 65));
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());
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
.
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
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 );
}
};
Vous pouvez le faire dans Qt Designer. Cliquez simplement sur votre bouton puis allez dans la propriété icon puis choisissez votre fichier image.
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 .qrc
ici
icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap(":/images/icon.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.pushButton.setIcon(icon)