无法通过调用 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
}
我正在尝试根据 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
}