Spec-Zone.ru › Qt 5.14

Импорт каталогов 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-адрес удалённого каталога %%%CODE_BLOCK_19%%:

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.14/qtqml-syntax-directoryimports.html

Spec-Zone.ru

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