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

Cannot set bool property in QML item with calling C++ method

我正在尝试根据 C++ object 方法的 return 值在 QML Item 中分配 属性:

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

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

qml: false qrc:/gui/items/UeKeypad.qml:14:42: Unable to assign [undefined] to bool

ueApplicationStatus.ueAnyUserLogged() 的结果是 false 类型 bool:

Header声明:

Q_INVOKABLE bool ueAnyUserLogged() const;

实施:

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

为什么 QML 报告

qml: false qrc:/gui/items/UeKeypad.qml:14:42: Unable to assign [undefined] to bool

?

在此代码中,您没有将布尔值 return 分配给 属性:

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

你是 运行 括号之间的代码并将它的 return 分配给 属性,发生的是这段代码没有 return 任何东西,这就是为什么你得到一个 undef。 您认为您正在将 ueApplicationStatus.ueAnyUserLogged(); 的 return 分配给您的 属性,但实际上您正在分配 print 的 return(最后一条语句)。

要使其按预期工作,您必须将 ueApplicationStatus.ueAnyUserLogged() 调用作为最后一条语句,或者您可以先将值赋给变量,然后 return 作为最后一条语句(如果例如,你想调用 print

示例代码:

property bool ueAnyUserLoggedStatus: {
    var anyUserlogged = ueApplicationStatus.ueAnyUserLogged()
    print(anyUserlogged)
    return anyUserlogged
}