2010-12-16 10 views
6

Estoy ejecutando mi aplicación Qt a través de la línea de comandos con un parámetro -stylesheet. Los estilos para los controles funcionan, pero no cuando intento cargar una imagen de fondo para MainWindow. me trataron:No se puede establecer la imagen de fondo en Qt Stylesheet

QMainWindow{ 
background-image:url(:image_256_8bit_latest_back.png); 
} 

también trató de retirar el ":" en el fondo, pero no hace una diferencia. ¿Alguien puede decirme qué pasa con este StyleSheet?

Respuesta

12

¿Dónde se encuentra la imagen que está intentando usar?

¿Lo puso como resource de su aplicación?

Si desea utilizar una imagen que es parte de sus recursos, debe tener un archivo de recursos (*.qrc) en su proyecto. Este archivo debe contener algo como esto:

<RCC> 
    <qresource prefix="/images"> 
     <file alias="sunset.jpg">sunset.jpg</file> 
    </qresource> 
</RCC> 

Entonces, se podría escribir el código en el constructor de su QMainWindow:

setStyleSheet("background-image: url(:/images/sunset.jpg);"); 

Si no desea utilizar el Qt resource system, que sólo puede poner la ruta a la imagen de su disco:

setStyleSheet("background-image: url(res/images/sunset.jpg);"); 

tener cuidado sin embargo si está utilizando una ruta relativa: Qt se iniciará desde la ubicación actual, lo que podría cambie, especialmente si está desarrollando con Qt Creator.

Con Qt Creator, cuando ejecuta su aplicación en modo de depuración, la ruta actual está en debug/. Cuando ejecuta su aplicación en modo de lanzamiento, la ruta actual está en release/ (a menos que haya cambiado la configuración).

+1

gracias por la información :). Pero la razón por la que quiero un archivo QSS separado es porque quiero que los usuarios puedan personalizar la aplicación simplemente cargando su propio archivo QSS. De modo que cuando se ejecute en el símbolo del sistema, podría aplicar fácilmente todos los estilos desde el archivo QSS sin tener que tocar el código ... – Owen

+1

Eso significa que la imagen está en algún lugar del disco. Pero al comenzar la ruta con ':' le dice a Qt que la imagen es un recurso. ¿Has intentado poner la ruta de la imagen absoluta en tu hoja de estilo? –

+0

Intenté crear un archivo llamado 'stylesheet.qss', ubicado en la carpeta de mi aplicación, que contiene algo como esto:' QMainWindow {\t background-image: url (sunset.jpg); } ' Ejecuto la aplicación con el argumento '-stylesheet = stylesheet.qss' y el fondo de mi aplicación es la imagen del atardecer. No entiendo por qué esto no está funcionando para ti. –

0

Claramente hay un problema con la ruta a su imagen. Intente usar una ruta absoluta para verificar que la imagen esté cargada por QT y funcionando.

+0

No hay problema con la ruta porque funciona como una imagen para los botones ... :) – Owen

Cuestiones relacionadas