QQmlApplicationEngine

一、描述

QQmlApplicationEngine 继承自 QQmlEngine,结合了 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 内。

如果不使用任何需要 QGuiApplication 的 QML 模块,也可以将 QCoreApplication 与 QQmlApplicationEngine 一起使用。

二、成员函数

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

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

创建一个新的 QQmlApplicationEngine 并在给定的 filePath 加载 QML 文件。

      QQmlApplicationEngine(QObject *parent = nullptr)

使用给定的父级创建一个新的 QQmlApplicationEngine。必须稍后调用 load() 才能加载 QML 文件。

2、void load(const QString &filePath)

加载位于 filePath 的根 QML 文件。

filePath 必须是本地文件的路径。 如果 filePath 是相对路径,则将其视为相对于应用程序的工作目录。

文件定义的对象树立即实例化。

      void load(const QUrl &url)

加载位于 url 的根 QML 文件。文件定义的对象树会立即为本地文件 url 创建。远程 url 是异步加载的,监听 objectCreated 信号以确定对象树何时准备好。

如果发生错误,则使用空指针作为参数发出 objectCreated 信号。

3、void loadData(const QByteArray &data, const QUrl &url = QUrl())

加载data中给定的 QML。由data定义的对象树立即实例化。

4、【信号】void objectCreated(QObject *object, const QUrl &url)

当object完成加载时会发出此信号。如果加载成功,object 包含指向加载对象的指针,否则该指针为 nullptr。

还提供了对象来源的组件的 url。

5、void setExtraFileSelectors(const QStringList &extraFileSelectors)

将 extraFileSelector 设置为传递给用于将 URL 解析为本地文件的内部 QQmlFileSelector。加载第一个 QML 文件时应用 extraFileSelectors。之后设置它们没有效果。

6、void setInitialProperties(const QVariantMap &initialProperties)

设置 QML 组件在加载后初始化的属性。

QQmlApplicationEngine engine;

EventDatabase eventDatabase;
EventMonitor eventMonitor;

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

7、QList<QObject *> rootObjects()

返回由 QQmlApplicationEngine 实例化的所有根对象的列表。

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值