Spec-Zone.ru › Qt 5.12

Импорт директорий документов 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.12/qtqml-syntax-directoryimports.html

Spec-Zone.ru

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