1、简介
截止到我写这篇博客时,我所知道的注册到QML有两种方式,一种是qmlRegisterType,另一种是通过QQmlEngine->rootContext()->setContextProperty()注册。两种方式各有优缺点。下面分次介绍,并综合对比。
2、方式一:qmlRegisterType
2.1 注册
这种方式常见于库中,引用他人的qml库时会大量看到。比如FluentUI(注释:qml文件也可通过qmlRegisterType注册)。代码可以通过链接查看,在Fluent.cpp源文件中。
通过这种方式注册c++类型到QML中需要在qml中创建实体才能使用此类型,什么是实体?就是在一段QML中使用这个对象,同样拿FluentUI举例,FluentUI中注册了一个FluTreeView类型
qml类型注册代码
qmlRegisterType(QUrl("qrc:/com.zhuzichu/controls/FluTreeView.qml"),uri,major,minor,"FluTreeView");
c++类型注册代码
// 为什么继承QQuickItem,因为好多属性不用自己写了,比如x,y,宽高等,而且QT提供很多东西基本继承自QQuickItem
// 当然,如果不需要这些也可直接继承QObject,因为QQuickItem也是继承自QObject
class CPPRegister : public QQuickItem {
Q_OBJECT
};
qmlRegisterType<CPPRegister>("CPPRegister", 1, 0, "CPPRegister");

最低0.47元/天 解锁文章
595

被折叠的 条评论
为什么被折叠?



