¿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.


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());

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));

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());

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.


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 );
    }
};

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


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.


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í.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.