¿Cómo configurar la imagen en QPushButton?

81

Quiero configurar una imagen QPushButtony el tamaño de QPushButtondebe depender del tamaño de la imagen. Puedo hacer esto cuando lo uso QLabel, pero no con QPushButton.

Entonces, si alguien tiene una solución, por favor ayúdeme.

greshi Gupta
fuente
2
Hay dos formas de configurar la imagen en un botón en Qt, la forma programática de configurar la imagen, qt-articles.blogspot.com/2010/06/… de la hoja de estilo cómo se configura la imagen, qt-articles. blogspot.com/2010/06/…
Naruto
eso es genial ... funciona bien ... muchas gracias ...
greshi Gupta
De nada :) Si cree que la respuesta es correcta, márquela como correcta para que sea útil para otras personas que tengan un problema similar.
Naruto

Respuestas:

69

Lo que puede hacer es utilizar un mapa de píxeles como icono y luego poner este icono en el botón.

Para asegurarse de que el tamaño del botón sea correcto, debe volver a visualizar el icono de acuerdo con el tamaño del mapa de píxeles.

Algo como esto debería funcionar :

QPixmap pixmap("image_path");
QIcon ButtonIcon(pixmap);
button->setIcon(ButtonIcon);
button->setIconSize(pixmap.rect().size());
Jérôme
fuente
6
Sé que esto es antiguo, pero lo he hecho y el icono del botón sigue siendo el predeterminado. No obtengo errores y todos mis archivos de recursos parecen estar cargados y mis rutas son buenas. ¿Por qué esto no me funciona?
mrg95
46
QPushButton *button = new QPushButton;
button->setIcon(QIcon(":/icons/..."));
button->setIconSize(QSize(65, 65));
Sharanabasu Angadi
fuente
10

También puede configurar el tamaño del botón.

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

También puedes usar:

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

Nota : Esto es un poco hacky. Debe usar esto solo como último recurso. Los iconos deben establecerse desde el C++código o Qt Designer.

Iuliu
fuente
4

No creo que pueda establecer imágenes de tamaño arbitrario en ninguna de las clases de botones existentes. Si desea que una imagen simple se comporte como un botón, puede escribir su propia subclase QAbstractButton, algo como:

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 );
    }
};
Frank Osterfeld
fuente
Gracias por responder ... ¿Podrías ayudarme mostrando cómo puedo implementar este código mediante el uso de QPushButton en lugar de QAbstractButton? Como mis requisitos son usar QPushButton. Entonces, por favor ayúdame.
greshi Gupta
Como dije, no creo que haya una forma adecuada. En todo caso, QStyle y las hojas de estilo podrían ayudar. Échale un vistazo.
Frank Osterfeld
3

Esto es antiguo pero sigue siendo útil. Totalmente probado con QT5.3.

Tenga cuidado, ejemplo sobre la ruta de recursos:

En mi caso, creé un directorio de recursos llamado "Recursos" en el proyecto del directorio de origen.

La carpeta "recursos" contiene imágenes e íconos. Luego agregué un prefijo "Imágenes" en Qt Para que la ruta del mapa de píxeles se convierta en:

Mapa de píxeles de QPixmap (": / images / Ressources / icone_pdf.png");

JF

JFP74
fuente
la respuesta debería proporcionar más información sobre cómo usar QPixmap con QPushButton
bunto1
2

Puede hacer esto en QtDesigner. Simplemente haga clic en su botón, luego vaya a la propiedad del icono y luego elija su archivo de imagen.

Nemeth Attila
fuente
Haga esto con la configuración básica del 'icono', al menos para ver cómo funciona con su imagen, antes de intentar configurar el icono por estado. Configure el tamaño del icono para que sea el de su imagen, o al menos lo suficientemente grande para su imagen, o no se mostrará.
ClearCrescendo
0

Solo usa este código

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

Tenga en cuenta que: "path_to_icon"es la ruta del icono de la imagen en el archivo .qrcde su proyecto. Puede encontrar cómo agregar un .qrcarchivo aquí.

dqthe
fuente