Spec-Zone.ru › Qt 6.0

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

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

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

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

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

Пример

Рассмотрим следующую структуру каталогов проекта 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-6.0/qtqml-syntax-directoryimports.html

Spec-Zone.ru

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