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.
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));
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:
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");
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á.
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í.
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());
fuente
QPushButton *button = new QPushButton; button->setIcon(QIcon(":/icons/...")); button->setIconSize(QSize(65, 65));
fuente
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());
fuente
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 oQt Designer
.fuente
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 ); } };
fuente
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
fuente
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.
fuente
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.qrc
de su proyecto. Puede encontrar cómo agregar un.qrc
archivo aquí.fuente