Qt样式表,来自文件路径的背景图片

问题描述:

迄今为止我发现的所有例子都是指资源文件中的背景图片。就像:Qt样式表,来自文件路径的背景图片

QFrame { 
    background-image: url(:/images/header.png); 
} 

我想知道,有没有办法直接从文件系统使用文件?例如:

 background-image: url("C:\temp\foo.jpg"); ???? 
    background-image: file("C:\temp\foo.jpg"); ???? 

我试过所有类型的网址,但都没有工作。我是否总是必须在资源中添加文件?

+5

如果你使用反斜杠,你需要将它们转义出来,比如'C:\\ temp \\ foo.jpg'。使用正斜杠通常更容易。 – 2014-09-30 13:14:56

+1

@RetiredNinja请注意:在qss中'G:/ 2/qt.jpg'有效,但'G:\\ 2 \\ qt.jpg“不起作用。你是完全正确的逃避,但在qss需要使用'G:/ 2/qt.jpg' – Chernobyl 2014-09-30 13:34:30

您不一定需要将您的文件添加为资源。试试这个例子:

QFrame{background-image: url("C:/temp/foo.jpg");} 

请注意标准斜杠,就像你在URL中使用的那样 - 它们不是Windows的反斜杠。所以这一点,例如,将无法正常工作:

QFrame{background-image: url("C:\\temp\\foo.jpg");} /* Won't work! */ 

Windows的反斜杠是无效的QSS,甚至当你逃避它们。

你也可以使用相对路径:

QFrame{background-image: url("temp/foo.jpg");} 

要小心,虽然,因为路径是相对于CWD在运行时,该用户可能会改变。

+0

相对于*什么*,虽然? – 2016-08-19 19:12:57

+0

@MichaelScheper https://en.wikipedia.org/wiki/Path_(computing)#Absolute_and_relative_paths – Chernobyl 2016-08-21 18:54:02

+0

我没有问过什么是相对路径;我问道路是相对的。换句话说,在你的例子中,temp的假设父项是什么? CWD?我不知道的一些基础Qt路径? – 2016-08-22 22:43:25