Spec-Zone.ru › Qt 6.0

Класс 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.0/qqmlapplicationengine.html

Spec-Zone.ru

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