Использование переменных в таблицах стилей qt

есть ли возможность дать имя переменной шестнадцатеричным / rgb номерам .файл qss . Для eh

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

чтобы я мог определить переменную в верхней части таблицы стилей и использовать имя переменной, где это требуется, вместо использования шестнадцатеричного кода. Также, если мне нужно изменить цвет, я должен изменить его в одном месте, и он будет отражаться в файле.

Я также искал Saas но не знаю, как его можно использовать в кварта.

спасибо :)

3 ответов


вы могли бы построить свой собственный крошечный Sass довольно легко:

1.Создайте текстовый файл с определениями переменных. Используйте простой формат, как это:

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

2.В файле qss используйте имена переменных:

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

3.Откройте оба файла и для каждой переменной в файле определения измените ее вхождение в файл qss со значением (строкой) из файла определения. Это простая замена строки.

4.Примените предварительно обработанный qss в приложение.

Это самое простое решение. Вы можете изменить как файл определения, так и файл qss вне приложения и применить его без перекомпиляции кода.


то, что вы пытаетесь выполнить, просто невозможно с помощью чистых таблиц стилей Qt.

вы можете достичь аналогичного эффекта, изменив и перезагрузив таблицы стилей из кода C++, например:

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

к сожалению, это имеет несколько недостатков (невозможность предварительного просмотра в конструкторе, изменение кода, а не таблицы стилей), но это примерно так близко, как вы можете получить то, что вы пытаетесь достичь с Qt.


вот решение, использующее Сасс. Сначала установите привязки python:

pip install sass

- это:

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)