gpt4 book ai didi

c++ - Qt:从 C++ 向 QML 引擎抛出异常

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:43:00 50 4
gpt4 key购买 nike

调用 Q_INVOKABLE 时写在 C++ 中的方法来自JavaScriptQML 中发挥作用,你如何抛出异常?该方法属于 < MyApp > 类型的对象, 注册电话 qmlRegisterType()

例如,我有以下QML代码:

TextField {
id: fld_recipient

onEditingFinished: {
try {
var identity=myapp.identities.current_Identity;
var company=identity.companies.current_Company;
myapp.lookup_email(identity.identity_id,company.company_id,fld_recipient.text)
} catch(e) {
console.log(e);
}
}
}

在这里,方法 MyApp::lookup_email() 转到服务器并搜索匹配的电子邮件地址。这个过程可能会因大量错误而停止,我希望 catch() 语句显示该错误。

这是如何在 C++ 端完成的?有点像这样:

void MyApp::lookup_email(int identity_id,int company_id,QString email) {

....

error_code=server->lookup_email(identity_id,company_id,email);

if (error_code) { /// throw an exception to QML engine,
????? <= what goes here ?
}
}

最佳答案

Qml 不应包含任何业务逻辑,而应仅显示任何结果。如果您的应用程序遇到异常状态,请在业务逻辑中捕获异常并将结果/新状态呈现给用户。

如果您假设您的 (UI) 代码将使用不完整的数据调用,您应该忽略它。或者在调试级别使用断言。

关于c++ - Qt:从 C++ 向 QML 引擎抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41400627/

50 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com