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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了错误:未知方法参数类型:QString&相关的知识,希望对你有一定的参考价值。

在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;

问题是:为什么?

答案

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

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

它与Q_SIGNALs的原理相同。

以上是关于错误:未知方法参数类型:QString&的主要内容,如果未能解决你的问题,请参考以下文章

Parceable 错误:在偏移量 1112 处解组未知类型代码 7274595

获取错误“未知”类型的参数不能分配给“错误”类型的参数 |空值'

自定义输入类型的 Apollo 数组作为 Mutation 参数抛出“__typename”:未知字段错误

Cython“模板参数中的未知类型”错误

AWS Amplify 突变调用返回“UnknownArgument 类型的验证错误:未知字段参数”

Angular Apollo:错误:GraphQL 错误:“Mutation”类型的字段“AuthLogin”上的未知参数“用户名”