2012-06-05 13 views
8

Existe la posibilidad de dar un nombre de variable a los números hexadecimales/rgb en el archivo .qss. Para ehUso de variables en qt StyleSheets

myColor = #FFCC08 
QPushButton { background-color: myColor;} 

modo que pueda definir la variable en la parte superior de la hoja de estilo y utilizar el nombre de la variable dondequiera que se requiere en lugar de utilizar el código hexadecimal. Además, si necesito cambiar el color, entonces tengo que cambiar en un lugar y se reflejará en el archivo.

También busqué Saas pero no sé cómo se puede usar en qt.

Gracias :)

Respuesta

9

Se puede construir su propio pequeño Sass con bastante facilidad:

1.Create un archivo de texto con las definiciones de las variables. Utilice el formato simple como esto: archivo

@myColor = #FFDDEE 
@myColor2 = #112233 
@myWidth = 20px 

2.In qss uso de los nombres de variables:

QPushButton { 
    background-color: @myColor; 
    min-width: @myWidth; 
} 

3.Open ambos archivos y para cada variable en el archivo de definición cambiar su ocurrencia en el archivo qss con el valor (cadena) desde el archivo de definición. Es un reemplazo de cadena simple.

4.Aplicar el qss preprocesado en la aplicación.

Esta es la solución más simple. Puede cambiar el archivo de definición y el archivo qss fuera de la aplicación y aplicarlo sin necesidad de volver a compilar el código.

+0

Gracias por su tiempo. Usé la misma lógica para crear mi propio analizador que reemplaza cada color de variable personalizado que se define en el archivo .qss con el color real. – SAM

3

Lo que estamos tratando de lograr, simplemente no es posible el uso de hojas de estilo Qt puros.

Se puede lograr un efecto similar al modificar y volver a cargar las hojas de estilo desde dentro del código de C++, por ejemplo:

QString myColor = "#FFCC08"; 
QString styleSheet = "QPushButton { background-color: %1;}"; 
... 
myWidget->setStyleSheet(styleSheet.arg(myColor)); 

Desafortunadamente esto tiene varios inconvenientes (incapacidad para obtener una vista previa en el diseñador, el cambio de código en lugar de una hoja de estilo), pero se trata de lo más cerca que puede llegar a lo que está tratando de lograr con Qt.

+0

Sí, lo entiendo, pero el problema con el enfoque anterior es que estamos especificando las propiedades de la hoja de estilo dentro del código C++ para cada componente y no leyendo desde un archivo .qss. Gracias por tu tiempo. – SAM