2017-08-25 79 views
0
传递一个文件路径setStyleSheet()

我发现在OBS-工作室以下代码:是否有可能在Qt的

obs-studio/UI/obs-app.cpp

QString mpath = QString("file:///") + path.c_str(); 
setStyleSheet(mpath); 

通过file:///前面的文件路径被直接传递给setStyleSheet()

这种用法是不是在官方参考提及。然而,obs-studio并没有重新定义这个函数,表明它是一个Qt功能。

这是应该工作吗?我在我的代码中尝试过,但失败了。

+0

当然不知何故,你已经重新定义了它,不要让这些想法复杂化,因为它可以工作,覆盖该方法并添加文件的阅读 – eyllanesc

+0

@eyllanesc我很困惑为什么obs-studio可以做到这一点?它不重新定义该功能。 – chaosink

+0

它试图跟踪代码,也就是说,它会查找使用该方法的类的祖先。我认为这个问题没有多大贡献,因为你知道如何产生这种行为,那就是重写该方法。 – eyllanesc

回答

2

如果你看看Qt文档没有任何支持作为参数传递给setStyleSheet()传递任何URL指示。此外,如果您查看definition of QApplication::setStyleSheet,则没有URL处理。

样式表是由一个QStyleSheetStyle对象代理。在这个对象中,你会发现字符串结尾在this method of the CSS parser。读取文件的功能确实存在。

的逻辑来看待字符串的内容为文件路径,而不是样式表标记can be found herefile:///部分(如果存在)被删除,然后该字符串被理解为路径。

但对我来说,它似乎是一个无证的功能,因此更好地避免。