Класс QQmlApplicationEngine
QQmlApplicationEngine предоставляет удобный способ загрузки приложения из одного файла QML. Подробнее...
| Заголовок: | #include <QQmlApplicationEngine> |
| qmake: | QT += qml |
| С момента: | Qt 5.1 |
| Наследует: | QQmlEngine |
Этот класс был представлен в Qt 5.1.
Открытые функции
| 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 | 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-адресу 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-адреса загружаются асинхронно. Следите за сигналом 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] 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-5.15/qqmlapplicationengine.html