Utilisation de variables dans les feuilles de style qt

est - il possible de donner un nom de variable aux numéros hex/rgb .fichier qss . Eh

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

pour que je puisse définir la variable en haut de la feuille de style et utiliser le nom de la variable où que ce soit requis au lieu d'utiliser le code hexadécimal. En outre, si je dois changer la couleur, alors je dois changer à un endroit et il sera reflété dans le fichier.

j'ai aussi cherché Saas mais je ne sais pas comment il peut être utilisé qt.

Merci :)

11
demandé sur SAM 2012-06-05 17:39:14

3 réponses

vous pourriez construire votre propre Sass minuscule assez facilement:

1.Créez un fichier texte avec des définitions de variables. Utilisez un format simple comme ceci:

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

2.Dans le fichier qss, utilisez des noms de variables:

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

3.Ouvrir les deux fichiers et pour chaque variable dans le fichier de définition changer son occurrence dans le fichier qss avec la valeur (chaîne) à partir du fichier de définition. C'est une simple chaîne de caractères de remplacement.

4.Appliquer les qss prétraités dans le App.

C'est la solution la plus simple. Vous pouvez modifier à la fois le fichier de définition et le fichier qss en dehors de l'application et l'appliquer sans recompilation de code.

11
répondu Pucor 2012-06-14 11:19:39

ce que vous essayez d'accomplir n'est tout simplement pas possible en utilisant des feuilles de style Qt pure.

Vous pouvez obtenir un effet similaire en modifiant et en rechargeant vos feuilles de style à partir de votre code C++, par exemple:

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

malheureusement, cela a plusieurs inconvénients (incapacité de prévisualiser dans designer, changer de code plutôt qu'une feuille de style), mais il est à peu près aussi proche que vous pouvez obtenir ce que vous essayez de réaliser avec Qt.

3
répondu Chris 2012-06-05 14:13:35
sass. Tout d'abord, installez les fixations python:

pip install sass

Ensuite, utilisez:

import sys
import sass
app = QApplication(sys.argv)

# Create your sass style sheet (you can also write this in a file and load the file)
style = '''
$bg-dark: #292929;

QPushButton {
color: red;
background-color: $bg-dark;
}
'''.encode('utf-8')

# Compile Sass to CSS
style = sass.compile_string(style).decode()

# And set it to your app
app.setStyleSheet(style)
0
répondu Overdrivr 2018-03-19 09:21:25