Spec-Zone.ru › Qt 5.6

Импорт каталогов документов 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 следующий:

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

Пример:

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

Пример:

internal HighlightedButton HighlightedBtn.qml
Объявление JavaScript-ресурса <Identifier> <FileName> Объявление 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.6/qtqml-syntax-directoryimports.html

Spec-Zone.ru

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