【发布时间】:2015-03-01 21:57:07
【问题描述】:
我在做一个可扩展的QML应用,就是说有些组件是根据应用上加载的“插件”来加载的。
以下情况之一。
我有一个 ListView,ListView 委托上显示的一些元素是根据插件加载的。 要创建组件/对象,我使用以下函数: Qt.createComponent 和component.createObject
效果很好,我可以看到加载的 qml 组件并与之交互。
但是,对于某些功能,我需要从插件 qml 文件(加载到委托上)中更改 listview 索引,但无法从那里访问索引,我得到一个简单的 索引未定义 尝试时。
代码在github上:扩展文件是这个:https://github.com/danielfranca/procrastinationkiller/blob/master/extensions/timerTasks/taskRow.qml
我需要访问索引的具体部分是在 clicked 信号上的 id 为 playpause 的元素的鼠标区域。
我也尝试找到 ListView 元素,并使用 x、y 鼠标坐标调用函数 indexAt,但它始终返回 0。
加载组件的具体代码是这个:
Component.onCompleted: {
addTaskLayout.inputObjects = Extensions.createExtensionComponent("extraInput.qml", addTaskLayout);
}
这个函数是这个文件中的一个javascript函数:https://github.com/danielfranca/procrastinationkiller/blob/master/extensions.js
如果您需要更多详细信息,请告诉我,我很想了解为什么 QML 不向加载的组件公开索引以及为什么即使使用 x,y 坐标也找不到索引。
我正在使用 Qt5.4、Ubuntu 14.10、Qt Creator 3.3.1
【问题讨论】:
标签: javascript qt qml