是否可以将文件路径传递给Qt中的setStyleSheet()

Is it possible to pass a file path to setStyleSheet() in Qt

本文关键字:Qt 中的 setStyleSheet 文件 路径 是否      更新时间:2023-10-16

我在obs-studio中找到了以下代码:

obs-studio/UI/obs-app.cpp

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

前面带有file:///的文件路径将直接传递给setStyleSheet()

官方参考中未提及此用法。但是,obs-studio并没有重新定义这个函数,表明它是一个Qt功能。

这应该有效吗?我在代码中尝试过,但失败了。

如果您查看Qt文档,则没有迹象表明支持任何URL作为参数传递给setStyleSheet()。此外,如果您查看QApplication::setStyleSheet的定义,则没有URL处理。

样式表由QStyleSheetStyle对象代理。在该对象中,您会发现字符串最终出现在 CSS 解析器的此方法中。读取文件的功能确实存在。

将字符串的内容视为文件路径而不是样式表标记的逻辑可以在此处找到。file:///部分(如果存在(将被删除,然后将字符串理解为路径。

然而,对我来说,这似乎是一个未记录的功能,因此最好避免。