错误:未知方法参数类型:QString&

问题描述 投票:1回答:1

在C ++方面,我有这个方法:

class MyClass : public QObject
{
    Q_OBJECT

    Q_INVOKABLE QVariant getFamily_byParentName(QString &parentName) const;

    // ...
}

我在QML上调用C ++方法:

onButtonClicked: {
    myClass.getFamily_byParentName(items3D.model[0]) // items3D.model[0] is a string
}

上面的代码在QML行myClass.getFamily_byParentName(items3D.model[0])上抛出了这个错误:

错误:未知方法参数类型:QString&


通过将QString参数声明为const来解决上述错误:

Q_INVOKABLE QVariant getFamily_byParentName(const QString &parentName) const;

问题是:为什么?

qt qml
1个回答
3
投票

QML引擎通过复制值来转换适当的数据类型。

在你的情况下,QString &是对无法复制的QString的引用,而是可以复制const QString &。出于这个原因,你不能将QObject作为参数,因为它不可复制,而你必须使用QObject *,因为指针是可复制的。

它与Q_SIGNALs的原理相同。

© www.soinside.com 2019 - 2024. All rights reserved.