Hojas de estilo Qt
Las Hojas de Estilo de Qt son un potente mecanismo que permite personalizar la apariencia de los widgets, además de lo que ya es posible subclasificando QStyle. Los conceptos, terminología y sintaxis de las Hojas de Estilo Qt están fuertemente inspirados en las Hojas de Estilo en Cascada (CSS) de HTML, pero adaptados al mundo de los widgets.
Temas:
- Visión General
- Sintaxis de las Hojas de Estilo
- Qt Widgets Integración del Diseñador
- Personalizando Qt Widgets Usando Hojas de Estilo
- Referencia de Hojas de Estilo Qt
- Ejemplos de Hojas de Estilo Qt
Nota: Si se utilizan Hojas de Estilo Qt en el mismo widget que funciones que establecen la apariencia de los widgets, como QWidget::setFont() o QTreeWidgetItem::setBackground(), las hojas de estilo tendrán preferencia si las configuraciones entran en conflicto.
Visión general
Las hojas de estilo son especificaciones textuales que pueden establecerse en toda la aplicación mediante QApplication::setStyleSheet() o en un widget específico (y sus hijos) mediante QWidget::setStyleSheet(). Si se establecen varias hojas de estilo en diferentes niveles, Qt deriva la hoja de estilo efectiva a partir de todas las establecidas. Esto se llama cascada.
Por ejemplo, la siguiente hoja de estilo especifica que todos los QLineEdits deben usar el amarillo como color de fondo, y todos los QCheckBoxes deben usar el rojo como color de texto:
Para este tipo de personalización, las hojas de estilo son mucho más potentes que QPalette. Por ejemplo, podría ser tentador establecer la función QPalette::Button en rojo para un QPushButton para obtener un pulsador rojo. Sin embargo, no está garantizado que esto funcione para todos los estilos, porque los autores de estilos están restringidos por las directrices de las distintas plataformas y (en Windows y macOS) por el motor de temas nativo.
Las hojas de estilo permiten realizar todo tipo de personalizaciones que son difíciles o imposibles de llevar a cabo utilizando únicamente QPalette. Si quieres fondos amarillos para los campos obligatorios, texto rojo para los botones pulsadores potencialmente destructivos o elegantes casillas de verificación, las hojas de estilo son la respuesta.
Las hojas de estilo se aplican sobre la página widget style actual, lo que significa que sus aplicaciones tendrán un aspecto lo más nativo posible, pero se tendrán en cuenta las restricciones de las hojas de estilo. A diferencia de la manipulación de paletas, las hojas de estilo ofrecen garantías: Si establece que el color de fondo de QPushButton sea rojo, puede estar seguro de que el botón tendrá un fondo rojo en todos los estilos y en todas las plataformas. Además, Qt Widgets Designer ofrece integración de hojas de estilo, lo que facilita la visualización de los efectos de una hoja de estilo en diferentes widget styles.
Además, las hojas de estilo se pueden utilizar para proporcionar un aspecto distintivo a tu aplicación, sin tener que subclasificar QStyle. Por ejemplo, puede especificar imágenes arbitrarias para los botones de radio y las casillas de verificación para que destaquen. Utilizando esta técnica, también puede lograr personalizaciones menores que normalmente requerirían subclasificar varias clases de estilo, como especificar un style hint.
Cuando una hoja de estilo está activa, el QStyle devuelto por QWidget::style() es un estilo "hoja de estilo" envolvente, no el estilo específico de la plataforma. El estilo envoltorio garantiza que se respete cualquier hoja de estilo activa y, por lo demás, reenvía las operaciones de dibujo al estilo subyacente específico de la plataforma (por ejemplo, QWindowsVistaStyle en Windows).
Desde Qt 4.5, las hojas de estilo de Qt son totalmente compatibles con macOS.
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.