Spec-Zone.ru › Qt 5.15

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

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

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

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

Если локальный каталог содержит файл списка каталога 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/qt-5.15/qtqml-syntax-directoryimports.html

Spec-Zone.ru

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