以编程方式编辑QSS样式表

时间:2016-08-08 09:16:17

标签: c++ qt stylesheet qtstylesheets

我想要做的是在特定文件夹中有一个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;
}

我可以将值设置为临时样式表并应用它。

1 个答案:

答案 0 :(得分:2)

动态C ++设置器和getter之间存在一种可怕的不对称性,可以通过QSS设置几个(但很远)的属性。

为了让问题变得更糟,正如您所注意到的那样,除了刷新整个事物之外,没有其他方法可以编辑活动样式表,这意味着重新加载所有内容。最重要的是,加载后没有简单的编程方式来实际编辑样式表。它是一个结构化的字符串,为了解析和修改它,你需要求助于你编写的样板代码。

不使用样式表也不是一种选择,因为没有它们就无法设置各种属性。