2014-09-30 2 views
2

Все примеры, которые я нашел до сих пор, относятся к фоновым изображениям в файле ресурсов. Что-то вроде:Qt stylesheet, background image from filepath

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

Интересно, есть ли способ использовать файл непосредственно из файловой системы? Что-то вроде:

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

Я пробовал все виды URL-адресов, но никто не работает. Нужно ли всегда добавлять файл в ресурсы?

+5

Если вы используете обратную косую черту, вам нужно сбежать от них, например 'C: \\ temp \\ foo.jpg'. Обычно проще использовать косые черты. –

+1

@RetiredNinja Обратите внимание: в qss 'G:/2/qt.jpg' работает, но' 'G: \\ 2 \\ qt.jpg" 'не работает. Вы абсолютно правы в побеге, но в qss нужно использовать 'G:/2/qt.jpg' – Chernobyl

ответ

8

Вам не обязательно добавлять ваши файлы в качестве ресурсов. Попробуйте это, например:

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

Относительно * what *, хотя? –

+0

@MichaelScheper https://en.wikipedia.org/wiki/Path_(computing)#Absolute_and_relative_paths – Chernobyl

+0

Я не спрашивал, что такое относительный путь; Я спросил, к чему путь относится. Другими словами, что является предполагаемым родителем temp в вашем примере? CWD? Какой-то базовый путь Qt, о котором я не знаю? –