Quiero configurar una imagen QPushButton
y el tamaño de QPushButton
debe 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.
Quiero configurar una imagen QPushButton
y el tamaño de QPushButton
debe 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.
Respuestas:
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());
QPushButton *button = new QPushButton;
button->setIcon(QIcon(":/icons/..."));
button->setIconSize(QSize(65, 65));
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 );
}
};
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
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.