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 :)
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.
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.
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)