Spec-Zone.ru › Qt 6.1

Тип url QML

Тип 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, чтобы получить доступ к его компонентам и изменить их:

var urlObject = new URL(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 Resource System из QML, следует использовать "qrc:///" вместо ":/", так как QML требует URL-путей. Относительные URL, разрешаемые внутри этого файла, будут использовать тот же протокол.

Кроме того, URL могут содержать закодированные символы с использованием схемы «percent-encoding», указанной в RFC 3986. Эти символы сохранятся в свойствах типа url, чтобы код QML мог создавать точные значения 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/qt-6.0/qml-url.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API