无法使用调用C ++方法在QML项中设置bool属性

时间:2015-10-13 11:54:20

标签: qml qt5 qtquick2

我正在尝试根据C ++对象方法的返回值在QML Item中分配属性:

property bool ueAnyUserLoggedStatus: {
    ueApplicationStatus.ueAnyUserLogged()
    print(ueApplicationStatus.ueAnyUserLogged())
}

这段代码输出以下调试信息:

  

qml:false qrc:/gui/items/UeKeypad.qml:14:42:无法分配   [undefined] bool

ueApplicationStatus.ueAnyUserLogged()的结果为false且类型为bool

标头声明:

Q_INVOKABLE bool ueAnyUserLogged() const;

实施

bool UeApplicationStatus::ueAnyUserLogged() const
{
    return !this->ueUsers()->isEmpty();
}

为什么要进行QML报告

  

qml:false qrc:/gui/items/UeKeypad.qml:14:42:无法分配   [undefined] bool

1 个答案:

答案 0 :(得分:2)

在此代码中,您没有将bool返回分配给属性:

property bool ueAnyUserLoggedStatus: {
    ueApplicationStatus.ueAnyUserLogged()
    print(ueApplicationStatus.ueAnyUserLogged())
}

您正在括号中运行代码并将其返回给属性,会发生什么是此代码不返回任何内容,这就是您获得 undef 的原因。 您认为您将ueApplicationStatus.ueAnyUserLogged();的回报分配给您的财产,但实际上您正在分配print(最后一项陈述)的回报。

要使其按预期工作,您必须将ueApplicationStatus.ueAnyUserLogged()调用作为最后一个语句,或者您可以先将值分配给变量,然后将其作为最后一个语句返回(如果您想调用{{ 1}},例如)。

示例代码:

print