gpt4 book ai didi

c++ - 以编程方式编辑 QSS 样式表

转载 作者:行者123 更新时间:2023-11-30 03:39:31 25 4
gpt4 key购买 nike

我想要做的是在特定文件夹中有一个 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: 我添加的示例代码可能有效,但看起来像是每行有 7-8 个 if 语句的“垃圾”代码。我需要的是,如果我可以为样式表中的每个元素设置变量,例如:

QDialog{ 
background-color: @dialogBackgroundColor;
min-width: @dialogMinWidth;
}

这样我就可以将值设置到临时样式表中并应用它。

最佳答案

对于可以通过 QSS 设置的几个(但远非所有)属性,动态 C++ setter 和 getter 之间存在严重的不对称。

更糟糕的是,正如您所注意到的,除了刷新整个样式表之外,没有合适的方法来编辑事件样式表,这意味着重新加载所有内容。最重要的是,加载后没有简单的编程方式来实际编辑样式表。它是一个结构化字符串,要解析和修改它,您需要求助于您编写的样板代码。

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

关于c++ - 以编程方式编辑 QSS 样式表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38825362/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com