我想要做的是在特定文件夹中有一个QSS样式表。我想以编程方式从GUI编辑选定的元素。由于QT不支持SaSS或LeSS,我需要手动执行此操作"。 到目前为止我所拥有的是读取一个qss文件,并且只有很少的if语句我可以得到放在qss文件上的每个元素的值。
QTextStream in(qssFile);
line = in.readLine();
if(line.startsWith("QDialog"))
{
int start = line.indexOf("{") + 1;
int end = line.indexOf("}", start);
qDebug() << "QDialog" << line.mid(start, end - start); //"background-color: #404040;"
}
我读了这行,如果用户更改gui上的值,我保存新的。 当然,这不是最佳/正确的解决方案,但我如何才能更好地解决这个问题?
更新1:我添加的示例代码可能有效,但看起来像是&#34;垃圾&#34;代码,每行7-8个if语句。我需要的是如果我可以为样式表中的每个元素设置变量,例如:
QDialog{
background-color: @dialogBackgroundColor;
min-width: @dialogMinWidth;
}
我可以将值设置为临时样式表并应用它。
答案 0 :(得分:2)
动态C ++设置器和getter之间存在一种可怕的不对称性,可以通过QSS设置几个(但很远)的属性。
为了让问题变得更糟,正如您所注意到的那样,除了刷新整个事物之外,没有其他方法可以编辑活动样式表,这意味着重新加载所有内容。最重要的是,加载后没有简单的编程方式来实际编辑样式表。它是一个结构化的字符串,为了解析和修改它,你需要求助于你编写的样板代码。
不使用样式表也不是一种选择,因为没有它们就无法设置各种属性。