gpt4 book ai didi

qml - 从 QML 中的函数调用?

转载 作者:行者123 更新时间:2023-12-04 22:14:08 25 4
gpt4 key购买 nike

我可以在页面中使用 InvokeActionItem 轻松共享项目,但我需要能够在 ListView 项目中调用它。我设法触发了一个调用,但我不知道如何在触发它时添加数据。我不断收到错误消息

InvocationPrivate::setQuery:不允许更改 InvokeQuery 对象

注意:我试图在纯 QML 中执行此操作,如有必要,我将通过 C++ 执行此操作,但 QML 会更可取。

在 Page 对象内工作的代码:

actions: [
InvokeActionItem {
ActionBar.placement: ActionBarPlacement.OnBar
title: "Share"
query {
mimeType: "text/plain"
invokeActionId: "bb.action.SHARE"
}

onTriggered: {
//myTextProperty is a string variable property for the page.
data = myTextProperty;
}
}
]

我尝试在其他项目中使用的代码如下,但不起作用:
Container {
gestureHandlers: [
TapHandler {
LongPressHandler {
onLongPressed: {
console.log("Longpress");

invokeQuery.setData("test");

invokeShare.trigger("bb.action.SHARE");
}
}

]

attachedObjects: [
Invocation {
id: invokeShare
query: InvokeQuery {
id:invokeQuery
mimeType: "text/plain"
}
}
]
}

有没有办法完全使用 QML 更改调用的数据,或者我是否只需要通过 C++ 运行它?

最佳答案

经过大量浏览论坛和测试各种方法后,我终于找到了一种有效的方法。

在您的附加对象中添加以下内容:

attachedObjects: [      
Invocation {
id: invokeShare
query: InvokeQuery {
id:invokeQuery
mimeType: "text/plain"
}
onArmed: {
if (invokeQuery.data != "") {
trigger("bb.action.SHARE");
}
}
}
]

然后,无论您需要在何处调用调用,请执行以下操作:
invokeQuery.mimeType = "text/plain"
invokeQuery.data = "mytext";
invokeQuery.updateQuery();

请注意,如果您不在 onArmed 中检查数据,它将在创建时自动调用调用 - 在 ListView 的情况下,这可能会导致 20 多个屏幕要求您在 bbm 上共享...;)

关于qml - 从 QML 中的函数调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14341606/

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