我有几个Qt样式表,看起来像这样:
MyClass
{
my_color: #abcdef;
}
然而,我最近将MyClass移动到一个新的命名空间ns
,这意味着它的相应qss类名现在是" ns - MyClass",而不仅仅是" MyClass&#34 ;。因此,我的所有样式表现在都无效。不幸的是,它们并非都在我的控制之下,因此我无法手动编辑它们。
所以我的问题是:如何配置ns::MyClass
以使用MyClass
的所有相同样式设置?
显然,Qt必须在某个时候解析样式表。因此,如果我可以访问已解析的样式表并仅提取影响MyClass
的部分,我应该能够通过ns::MyClass
或setStyle()
将这些部分添加到setStyleSheet()
。但我找不到办法做到这一点。
我的目标是Qt 4.8。
答案 0 :(得分:0)
您需要修补Qt以向QApplication
添加两种方法:
void setClassSubstitutions(const QMap<QString, QString> &);
QMap<QString, QString> classSubstitutions() const;
替换将在应用程序的PIMPL中进行,您需要让样式表机制使用它们。 Qt所需的全部补丁可能是二十几行(或者我希望如此)。