Spec-Zone.ru › Qt 5.11

Импорт каталогов документов QML

Локальный каталог файлов QML может быть импортирован без дополнительной настройки или конфигурации. Дистанционный каталог файлов QML также может быть импортирован, но требует наличия файла с описанием каталога qmldir. Локальный каталог может необязательно содержать файл с описанием каталога qmldir для определения имен типов, которые должны предоставляться клиентам, импортирующим каталог, и для указания JavaScript-ресурсов, которые должны быть доступны импортерам.

Импорт локальных каталогов

Любой файл QML в локальной файловой системе может импортировать локальный каталог, используя оператор импорта, который ссылается на абсолютный или относительный путь к каталогу в файловой системе, что позволяет файлу использовать типы объектов object types, определенные в этом каталоге.

Если локальный каталог содержит файл с описанием каталога qmldir , типы будут доступны с именами типов, указанными в файле qmldir; в противном случае они будут доступны с именами типов, полученными из имён файлов QML-документов. Если файл qmldir не указан в каталоге, будут экспонированы только имена файлов, начинающиеся с заглавной буквы и заканчивающиеся на ".qml", как типы.

Пример

Рассмотрим следующую структуру каталогов проекта QML. В корневом каталоге myapp есть набор общих компонентов пользовательского интерфейса в подкаталоге mycomponents, а основной код приложения — в подкаталоге main, вот так:

myapp
    |- mycomponents
        |- CheckBox.qml
        |- DialogBox.qml
        |- Slider.qml
    |- main
        |- application.qml

Файл main/application.qml может импортировать каталог mycomponents с помощью относительного пути к этому каталогу, что позволяет использовать типы объектов QML, определённые в этом каталоге:

import "../mycomponents"

DialogBox {
    CheckBox {
        // ...
    }
    Slider {
        // ...
    }
}

Каталог может быть импортирован в квалифицированное локальное пространство имён, в котором случае все типы, предоставленные в каталоге, должны быть квалифицированы:

import "../mycomponents" as MyComponents

MyComponents.DialogBox {
    // ...
}

Возможность импортировать локальный каталог удобна для случаев, таких как наборы компонентов внутри приложения и прототипирование приложений, хотя любой код, импортирующий такие модули, должен обновить соответствующие операторы import , если каталог модуля перемещается в другое место. Этому можно избежать, если использовать модули QML, так как установленный модуль импортируется с уникальной строкой идентификатора вместо пути к файловой системе.

Дистанционно расположенные каталоги

Каталог файлов QML также можно импортировать из удалённого расположения, если в нём содержится файл описания каталога qmldir.

Например, если каталог myapp в предыдущем примере размещён по адресу "http://www.my-example-server.com", и каталог mycomponents содержит файл qmldir, определённый следующим образом:

CheckBox CheckBox.qml
DialogBox DialogBox.qml
Slider Slider.qml

Тогда каталог можно импортировать, используя URL-адрес удалённого каталога mycomponents:

import "http://www.my-example-server.com/myapp/mycomponents"

DialogBox {
    CheckBox {
        // ...
    }
    Slider {
        // ...
    }
}

Обратите внимание, что при импорте каталога через сеть файл может получить доступ только к файлам QML и JavaScript, указанным в файле qmldir в каталоге.

Предупреждение: При импорте каталогов с удалённого сервера разработчики должны быть внимательны, чтобы загружать каталоги только из надёжных источников, чтобы избежать загрузки вредоносного кода.

Файлы описания каталога qmldir

Файл описания каталога qmldir отличается от файла определения модуля qmldir. Файл описания каталога qmldir позволяет быстро и легко совместно использовать группу QML-документов, но он не определяет пространство имён типов, в которое регистрируются типы QML, определённые документами, и не поддерживает версионирование этих типов QML-объектов.

Синтаксис файла описания каталога qmldir следующий:

Команда Синтаксис Описание
Объявление типа объекта <ИмяТипа> <ИмяФайла> Объявление типа объекта позволяет QML-документу быть экспонированным с заданным <TypeName>.

Пример:

RoundedButton RoundedBtn.qml
Объявление внутреннего типа объекта internal <ИмяТипа> <ИмяФайла> Объявление внутреннего типа объекта позволяет QML-документу быть зарегистрированным как тип, доступный только другим QML-документам, содержащимся в импорте каталога. Внутренний тип не будет доступен клиентам, которые импортируют каталог.

Пример:

internal HighlightedButton HighlightedBtn.qml
Объявление JavaScript-ресурса <Идентификатор> <ИмяФайла> Объявление JavaScript-ресурса позволяет экспонировать JavaScript-файл через указанный идентификатор.

Пример:

MathFunctions mathfuncs.js

Локальный каталог файловой системы может необязательно содержать файл qmldir. Это позволяет движку экспонировать только определённые типы QML клиентам, которые импортируют каталог. Кроме того, JavaScript-ресурсы в каталоге не будут экспонированы клиентам, если они не объявлены в файле qmldir.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.11/qtqml-syntax-directoryimports.html

Spec-Zone.ru

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