Spec-Zone.ru › Qt 6.1

Класс QQmlApplicationEngine

QQmlApplicationEngine предоставляет удобный способ загрузки приложения из одного файла QML. Подробнее...

Заголовок: #include <QQmlApplicationEngine>
CMake: find_package(Qt6 COMPONENTS Qml REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Qml)
qmake: QT += qml
С момента: Qt 5.1
Наследует: QQmlEngine
  • Список всех членов, включая унаследованные

Открытые функции

QQmlApplicationEngine(const QString &filePath, QObject *parent = nullptr)
QQmlApplicationEngine(const QUrl &url, QObject *parent = nullptr)
QQmlApplicationEngine(QObject *parent = nullptr)
virtual ~QQmlApplicationEngine() override
QList<QObject *> rootObjects() const

Открытые слоты

void load(const QString &filePath)
void load(const QUrl &url)
void loadData(const QByteArray &data, const QUrl &url = QUrl())
void setExtraFileSelectors(const QStringList &extraFileSelectors)
void setInitialProperties(const QVariantMap &initialProperties)

Сигналы

void objectCreated(QObject *object, const QUrl &url)

Подробное описание

Этот класс объединяет QQmlEngine и QQmlComponent, чтобы обеспечить удобный способ загрузки одного файла QML. Он также предоставляет некоторую центральную функциональность приложения для QML, которую приложение C++/QML обычно контролирует из C++.

Его можно использовать следующим образом:

#include <QGuiApplication>
#include <QQmlApplicationEngine>

int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv);
    QQmlApplicationEngine engine("main.qml");
    return app.exec();
}

В отличие от QQuickView, QQmlApplicationEngine не автоматически создаёт корневое окно. Если вы используете визуальные элементы из Qt Quick, вам необходимо поместить их в Window.

Вы также можете использовать QCoreApplication с QQmlApplicationEngine, если вы не используете какие-либо модули QML, которые требуют QGuiApplication (такие как QtQuick).

Список изменений конфигурации от стандартного QQmlEngine:

  • Подключение Qt.quit() к QCoreApplication::quit()
  • Автоматическая загрузка файлов перевода из каталога i18n, расположенного рядом с основным файлом QML.
    • Файлы перевода должны иметь префикс "qml_" например qml_ja_JP.qm.
  • Переводы перечитываются при изменении свойства QJSEngine::uiLanguage / Qt.uiLanguage.
  • Автоматически устанавливает контроллер инкубации, если сцена содержит QQuickWindow.
  • Автоматически устанавливает QQmlFileSelector в качестве интерцептора URL, применяя селекторы файлов ко всем файлам QML и ресурсам.

Поведение движка можно дальше настроить, используя унаследованные методы из QQmlEngine.

Документация по функциям-членам

QQmlApplicationEngine::QQmlApplicationEngine(const QString &filePath, QObject *parent = nullptr)

Создаёт новый QQmlApplicationEngine и загружает файл QML по заданному пути filePath, который должен быть локальным путем к файлу. Если задан относительный путь, он будет интерпретироваться относительно рабочей директории приложения.

Это предоставляется для удобства и эквивалентно использованию пустого конструктора и последующему вызову load.

QQmlApplicationEngine::QQmlApplicationEngine(const QUrl &url, QObject *parent = nullptr)

Создаёт новый QQmlApplicationEngine и загружает файл QML по заданному url. Это предоставляется для удобства и эквивалентно использованию пустого конструктора и последующему вызову load.

QQmlApplicationEngine::QQmlApplicationEngine(QObject *parent = nullptr)

Создаёт новый QQmlApplicationEngine с заданным parent. Вам необходимо вызвать load() позже, чтобы загрузить файл QML.

[slot] void QQmlApplicationEngine::load(const QString &filePath)

Загружает корневой файл QML, расположенный по пути filePath. filePath должен быть путём к локальному файлу. Если filePath - относительный путь, он рассматривается как относительный к рабочей директории приложения. Дерево объектов, определённое файлом, инициализируется немедленно.

Если произошла ошибка, сообщения об ошибках выводятся с помощью qWarning.

[slot] void QQmlApplicationEngine::load(const QUrl &url)

Загружает корневой файл QML, расположенный по адресу url. Дерево объектов, определённое файлом, создаётся немедленно для локальных URL файлов. Дистанционные URL загружаются асинхронно, следите за сигналом objectCreated, чтобы определить, когда дерево объектов готово.

Если произошла ошибка, сигнал objectCreated генерируется с нулевым указателем в качестве параметра, а сообщения об ошибках выводятся с помощью qWarning.

[slot] void QQmlApplicationEngine::loadData(const QByteArray &data, const QUrl &url = QUrl())

Загружает QML, заданный в data. Дерево объектов, определённое в data, инициализируется немедленно.

Если указан url, он используется в качестве базового URL компонента. Это влияет на относительные пути внутри данных и сообщения об ошибках.

Если произошла ошибка, сообщения об ошибках выводятся с помощью qWarning.

[signal] void QQmlApplicationEngine::objectCreated(QObject *object, const QUrl &url)

Этот сигнал генерируется, когда объект завершает загрузку. Если загрузка прошла успешно, object содержит указатель на загруженный объект, в противном случае указатель равен NULL.

Также предоставляется url компонента, из которого пришёл object.

Примечание: Если путь к компоненту был задан в виде QString, содержащего относительный путь, url будет содержать полностью разрешённый путь к файлу.

[slot, since 6.0] void QQmlApplicationEngine::setExtraFileSelectors(const QStringList &extraFileSelectors)

Устанавливает extraFileSelectors, которые будут переданы внутреннему QQmlFileSelector, используемому для разрешения URL на локальные файлы. extraFileSelectors применяются при загрузке первого файла QML. Их установка после этого не оказывает эффекта.

Эта функция была введена в Qt 6.0.

См. также QQmlFileSelector и QFileSelector::setExtraSelectors.

[slot, since 5.14] void QQmlApplicationEngine::setInitialProperties(const QVariantMap &initialProperties)

Устанавливает initialProperties, с помощью которых компонент QML инициализируется после загрузки.

QQmlApplicationEngine engine;

EventDatabase eventDatabase;
EventMonitor eventMonitor;

engine.setInitialProperties({
    { "eventDatabase", QVariant::fromValue(&eventDatabase) },
    { "eventMonitor", QVariant::fromValue(&eventMonitor) }
});

Эта функция была введена в Qt 5.14.

См. также QQmlComponent::setInitialProperties, QQmlApplicationEngine::load и QQmlApplicationEngine::loadData.

[override virtual] QQmlApplicationEngine::~QQmlApplicationEngine()

Удаляет QQmlApplicationEngine и все загруженные им объекты QML.

QList<QObject *> QQmlApplicationEngine::rootObjects() const

Возвращает список всех корневых объектов, созданных при помощи QQmlApplicationEngine. В этот список войдут только объекты, загруженные с помощью load() или удобного конструктора.

Примечание: В версиях Qt до 5.9 эта функция помечена как не-const.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.1/qqmlapplicationengine.html

Spec-Zone.ru

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