首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在QML中调用一个不存在的C++对象的成员“按预期”工作,但为什么呢?

在QML中调用一个不存在的C++对象的成员“按预期”工作,但为什么呢?
EN

Stack Overflow用户
提问于 2014-12-05 11:57:42
回答 1查看 154关注 0票数 1

我将QQmlComponent *作为QVariant::fromValue(comp)传递给QML。

请注意,QQmlComponent 没有任何方法 createObject()无论如何。

然而,在QML中,这是可行的:

代码语言:javascript
复制
qqmlcompPtr.createObject(p) 

在传递QQmlComponent *的情况下,QML引擎可能会执行一些隐式转换吗?因为这是QML的Component元素的一种方法。

我没注意到关于C++与QML之间隐式转换的文章里提到过这个

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-05 23:41:02

看看QQmlComponent.cpp,它确实包含了一个createObject()方法,但是它是一个受保护的方法,因此它可能没有文档化。

代码语言:javascript
复制
// QQmlComponent.cpp
void QQmlComponent::createObject(QQmlV8Function *args)
{
    Q_D(QQmlComponent);
    Q_ASSERT(d->engine);
    Q_ASSERT(args);
    ...

虽然它是受保护的,但它也被声明为可援用,因此您可以从QML调用它。我想,它之所以是一个受保护的方法,是因为它是从QML的JavaScript调用的,而不是从C++调用的。

代码语言:javascript
复制
// QQmlComponent.h
protected:
    QQmlComponent(QQmlComponentPrivate &dd, QObject* parent);
    Q_INVOKABLE void createObject(QQmlV8Function *);
    Q_INVOKABLE void incubateObject(QQmlV8Function *);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27315420

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档