qt QDeclarativeListProperty 从 qml 应用程序添加项目
为什么要在运行时将项目从 qml 文件添加到 QDeclarativeListProperty ? 在循环中,例如:
var i;
for(i = 0 ; i < 100 ; ++i)
{ listOfItems.append(MyItem {text:"list"+i})
}
和 listOfItems 是 QDeclarativeListProperty 列表... 我不想这样做:
listOfItems:
[
MyItem{text:"list val1"},
MyItem{text:"list val2"},
......
]
我在 qml 中显示此列表,列表的数据来自 qt 对象......
is there any why to add item to QDeclarativeListProperty from qml file at run time?
in a loop, for example:
var i;
for(i = 0 ; i < 100 ; ++i)
{
listOfItems.append(MyItem {text:"list"+i})
}
and listOfItems is the QDeclarativeListProperty list...
i don't want to do that:
listOfItems:
[
MyItem{text:"list val1"},
MyItem{text:"list val2"},
......
]
i display this list in qml and the data for the list comes from qt object....
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
你不能,
QDeclarativeListProperty
(或 Qt5 中的QQmlListProperty
)仅受影响一次,在实例化时,此后你无法添加/删除其中的任何元素。此外,在 JavaScript 代码中,您不能使用
Class { }
语法形式,它是 QML 特定的。You can't,
QDeclarativeListProperty
(orQQmlListProperty
in Qt5) is affected only once, at instanciation time, you can't append/remove any element in it after that.More, in JavaScript code, you can't use the
Class { }
syntax form, it's QML specific.如果我正确解决了您的问题,您正在寻找 Component.onCompleted 信号
http://doc.qt.nokia.com/main-snapshot/qml-component.html#onCompleted-signal
If I get your problem right you are looking for the Component.onCompleted signal
http://doc.qt.nokia.com/main-snapshot/qml-component.html#onCompleted-signal