在qt StyleSheets中使用变量

SAM*_*SAM 13 qt qtstylesheets

是否有可能在.qss文件中为hex/rgb数字赋予变量名称.对呃

myColor = #FFCC08
QPushButton { background-color: myColor;}
Run Code Online (Sandbox Code Playgroud)

这样我就可以在样式表的顶部定义变量,并使用变量名称wheverver required而不是使用十六进制代码.此外,如果我需要更改颜色,那么我必须在一个地方更改,它将反映在文件中.

我也搜索了萨斯,但不知道如何在qt中使用它.

谢谢 :)

Puc*_*cor 14

你可以很容易地建立自己的小萨斯:

1.创建一个包含变量定义的文本文件.使用这样的简单格式:

@myColor  = #FFDDEE
@myColor2 = #112233 
@myWidth  = 20px
Run Code Online (Sandbox Code Playgroud)

2.在qss文件中使用变量名称:

QPushButton { 
    background-color: @myColor; 
    min-width: @myWidth;
}
Run Code Online (Sandbox Code Playgroud)

3.打开定义文件中的两个文件和每个变量,使用定义文件中的值(字符串)更改其在qss文件中的出现.这是一个简单的字符串替换.

4.在应用程序中应用预处理的qss.

这是最简单的解决方案.您可以在应用程序外部更改定义文件和qss文件,并在不重新编译代码的情况下应用它.


Chr*_*ris 5

使用纯 Qt 样式表无法实现您想要完成的任务。

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

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

不幸的是,这有几个缺点(无法在设计器中预览,更改代码而不是样式表),但它与您尝试使用 Qt 实现的目标非常接近。