Тип QML url
локальзатор ресурсов.
Тип url относится к локализатору ресурсов (например, имени файла). Он может быть абсолютным, например, "http://qt-project.org", или относительным, например, "pics/logo.png". Относительный URL разрешается относительно URL содержащего компонента.
Например, следующее присваивает допустимый URL свойству Image::source, которое имеет тип url:
Image { source: "pics/logo.png" } При интеграции с C++, обратите внимание, что любое значение QUrl, переданное в QML из C++, автоматически преобразуется в значение типа url и наоборот.
Использование типа url
Когда относительный URL записывается в свойство типа url , он преобразуется в объект URL, поэтому сопоставление значения URL со значением входной строки завершится ошибкой. Вместо этого преобразуйте строку в URL, используя Qt.resolvedUrl() для сравнения, и используйте toString() для получения содержимого URL:
Image {
source: "pics/logo.png"
Component.onCompleted: {
// This prints 'false'. Although "pics/logo.png" was the input string,
// it's been converted from a string to a URL, so these two are not the same.
console.log(source == "pics/logo.png")
// This prints 'true' as Qt.resovledUrl() converts the string into a
// URL with the correctly resolved path
console.log(source == Qt.resolvedUrl("pics/logo.png"))
// This prints the absolute path, e.g. "file:///path/to/pics/logo.png"
console.log(source.toString())
}
} Примечание: При ссылке на файлы, хранящиеся с помощью системы ресурсов Qt из QML, следует использовать "qrc:///" вместо ":/", так как QML требует пути URL. Относительные URL, разрешенные из этого файла, будут использовать тот же протокол.
Кроме того, URL могут содержать закодированные символы, используя схему «кодирования процентов», указанную в RFC 3986. Эти символы сохранятся в свойствах типа url, что позволит коду QML создавать точные значения URL. Исключение из этого правила — предварительное декодирование символов разделителя каталогов ('/') — эти символы декодируются для правильной классификации URL.
Например, к локальному файлу, содержащему символ '#', который обычно интерпретируется как начало элемента URL «фрагмент», можно получить доступ, закодировав символы имени файла:
Image { source: encodeURIComponent("/tmp/test#1.png") } Этот базовый тип предоставляется языком QML.
См. также Основные типы QML.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.6/qml-url.html