在QT样式表中使用变量(Using variables in qt StyleSheets)

2019-07-29 17:25发布

有没有在.qss文件为十六进制/ RGB数字给变量名的任何可能性。 对于EH

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

这样我就可以定义在样式表的顶部的变量,并使用变量名等。无论需要,而不是使用十六进制代码。 另外,如果我需要改变颜色的话,我在一个地方改变,它会throught文件中反映出来。

我也搜索了萨斯 ,但不知道如何可以在Qt使用。

谢谢 :)

Answer 1:

你可以很轻松地建立自己的小萨斯:

1.创建与变量定义的文本文件。 使用这样简单的格式:

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

2.In QSS文件使用的变量名:

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

3.Open文件和用于定义文件的每个变量改变其发生在QSS文件从定义文件中的值(字符串)。 这是一个简单的字符串替换。

4.适用于应用程序的预处理QSS。

这是最简单的解决方案。 您可以在应用程序之外同时改变定义文件和文件QSS并加以应用而没有重新编译代码。



Answer 2:

什么你想简单地完成使用纯Qt的样式表是不可能的。

您可以实现通过修改,并从你的C ++代码中重新载入样式表,例如类似的效果:

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

不幸的是这有几个缺点(不能在设计预览,更改代码,而不是一个样式表),但它是关于尽可能靠近你可以得到你想要实现使用Qt的东西。



Answer 3:

下面是一个使用的解决方案顶嘴 。 首先,安装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)


文章来源: Using variables in qt StyleSheets