我试图根据c++对象方法的返回值在QML Item
中分配属性:
property bool ueAnyUserLoggedStatus: {
ueApplicationStatus.ueAnyUserLogged()
print(ueApplicationStatus.ueAnyUserLogged())
}
这段代码输出如下调试信息:
qml: false qrc:/gui/items/UeKeypad。qml:14:42:无法分配[undefined] to 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] to bool
?
在此代码中,您没有将bool返回值分配给属性:
property bool ueAnyUserLoggedStatus: {
ueApplicationStatus.ueAnyUserLogged()
print(ueApplicationStatus.ueAnyUserLogged())
}
你正在运行括号之间的代码,并将它的返回值赋值给属性,发生的是这段代码不返回任何东西,这就是为什么你得到一个undef。您认为您正在分配ueApplicationStatus.ueAnyUserLogged();
的返回值给您的属性,但您实际上分配了print
的返回值(最后一条语句)。
要使它像你期望的那样工作,你必须将ueApplicationStatus.ueAnyUserLogged()
调用作为最后一条语句,或者你可以先将值赋给一个变量,然后将其作为最后一条语句返回(例如,如果你想调用print
)。
示例代码:
property bool ueAnyUserLoggedStatus: {
var anyUserlogged = ueApplicationStatus.ueAnyUserLogged()
print(anyUserlogged)
return anyUserlogged
}