给QML一个指向const对象而不是非const对象的const指针?

时间:2018-10-10 18:07:54

标签: c++ qt qml

我有一个使用QML的项目,其中QML的对象类型为Foo。我要更改它,以便QML具有类型const Foo的对象。我该怎么做呢?我有QML调用一个正在工作的C ++函数,并使用了Foo*。我将其更改为采用const Foo*(在逻辑上应该如此),但是我在调​​用它的QML行上收到运行时错误,说“ Error: Unknown method parameter type: const Foo*”。

我尝试更改

qmlRegisterType<Foo>("FooLib", 1, 0, "Foo");

qmlRegisterType<const Foo>("FooLib", 1, 0, "Foo");

但无济于事。然后我尝试做

qmlRegisterUncreatableType<Foo>("FooLib", 1, 0, "Foo", "Can't create one");

,然后用对我创建的工厂方法的调用替换我的QML FooLib.Foo {},该工厂方法返回一个Foo*。相同的运行时错误。

我试图使我的工厂返回const Foo*。那取得了进步。这样就不会崩溃。但是,我在尝试访问TypeError: Cannot read property 'bar' of undefined的{​​{1}}时,在QML中遇到“ Q_PROPERTY”这样的运行时错误。该属性只有一个Foo,该成员函数是READ。关于const的错误使我认为QML可能不知道undefinedconst FooFooconst是相同的,或者它正在从其他函数中获得Q_PROPERTY s,并且不知道可以将其转换为Foo* s。

是吗? QML是否无法自动将const Foo*转换为Foo*?我应该如何编写const正确的代码?

0 个答案:

没有答案