繁体   English   中英

强制重新计算Qt样式表似乎无济于事

[英]Forcing a recalcuation of Qt Stylesheet appears to do nothing

使用样式表,我试图更改窗口的样式,包括所有子项。

所有子项均使用setObjectName进行命名,并且样式表使用相同的名称来更改命名小部件的样式(以及一些不需要更改的摘录)。 我正在通过首先将值插入到std::map ,将名称(例如QWidget#hello!hover映射到一组键值对(例如background-color#0f0f0f来重新计算样式表。 ["QWidget#hello!hover"]["background-color"] = "#0f0f0f" ,将是一个条目。

更改样式表映射后,我将重新计算整个样式表,并在主窗口小部件上使用setStyleSheet对其进行设置,并在顶部添加/* */ (假定这将强制重新计算样式表)。 但是,这似乎没有任何作用。

这样做,在主窗口小部件的构造函数中可以正常工作,但是一开始设置后什么也不做。

我计算出的样式表是有效的,并且所有条目都按我期望的方式排序,所有小部件都具有预期的名称,并且由于它是我第一次设置时起作用的,因此我怀疑问题在于新样式表具有没有影响,或者对孩子没有影响。

我正在Windows 10上使用Qt 5.4(最初为Qt3开发的旧的糟糕的废话软件)。

我怎样才能解决这个问题?

我通过在主窗口小部件的所有子级上设置样式表来解决此问题。 在计算了新的样式表并将其存储在名为stylesheetQString之后,我使用了:

QList<QWidget*> children = findChildren<QWidget*>(); 
for (QList<QWidget*>::iterator child = children.begin(); child != children.end(); ++child);
    (*child)->setStyleSheet(stylesheet);

一切都像魅力。 所做的更改非常罕见,并且窗口中没有很多东西,因此执行此操作的成本并不算太大-我相信可以更高效地完成此操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM