Spec-Zone.ru › Qt

Класс 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 генерируется с указателем NULL в качестве параметра, а сообщения об ошибках выводятся с помощью 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.2/qqmlapplicationengine.html

Spec-Zone.ru

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