不能通过调用c++方法在QML项中设置bool属性



我试图根据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
}

相关内容

  • 没有找到相关文章

最新更新