Использование переменных в таблицах стилей 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)