2012-01-30 12 views
7

En mi aplicación, la hoja de estilo para toda la aplicación se toma de un archivo de recursos cargado en la aplicación.La actualización de ObjectName del widget no actualiza el estilo automáticamente

Tengo dos hojas de estilo definidas allí por un QListWidget:

QListWidget#Good{ 
..some color properties 
} 

QListWidget#Bad { 
..soem different color properties 
} 

En una forma, el nombre del objeto de mi QListWidget es "bueno", por lo que se adhiere al estilo #good. Durante el tiempo de ejecución, tengo un caso en el que quiero "Establecer NombreObjeto" en "Malo" y hacer que el estilo cambie instantáneamente en la interfaz de usuario.

he notado dos cosas:

  1. llamar simplemente "SetObjectName (" malo ");" doens't cambiar el estilo de los métodos ...
  2. La única vez "SetObjectName (" Bad ");" works es si se llama desde el constructor del Widget que contiene el QListWidget.

Obviamente me falta alguna fase de "estilo de actualización". Tenga en cuenta que no puedo tener "setStyleSheet" en el código, debe provenir del archivo QSS.

¿Qué me estoy perdiendo?

Respuesta

9

Tengo esto resuelto. Llamando:

style()->unpolish(theWidget); 
style()->polish(theWidget); 

En mi aparato después del cambio de nomObjeto (setObjectName) resolvieron el problema.

Cuestiones relacionadas