我正在尝试根据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
答案 0 :(得分:2)
在此代码中,您没有将bool返回分配给属性:
property bool ueAnyUserLoggedStatus: {
ueApplicationStatus.ueAnyUserLogged()
print(ueApplicationStatus.ueAnyUserLogged())
}
您正在括号中运行代码并将其返回给属性,会发生什么是此代码不返回任何内容,这就是您获得 undef 的原因。
您认为您将ueApplicationStatus.ueAnyUserLogged();
的回报分配给您的财产,但实际上您正在分配print
(最后一项陈述)的回报。
要使其按预期工作,您必须将ueApplicationStatus.ueAnyUserLogged()
调用作为最后一个语句,或者您可以先将值分配给变量,然后将其作为最后一个语句返回(如果您想调用{{ 1}},例如)。
示例代码:
print