【发布时间】:2015-06-23 10:29:59
【问题描述】:
我有一个基于QAbstractListModel 的模型。
它实现了几个不同的角色来提供各种数据。
我在ComboBox 中设置了model 和textRole。这非常有效。
当用户从这个ComboBox 中选择一个项目(行)时,我需要运行一些Javascript 来读取Item 的几个不同角色的值,并使用它们来做有用的工作。
但是,我找不到任何方法来做到这一点。示例ComboBoxQML:
import QtQuick 2.4
import QtQuick.Controls 1.3
ComboBox {
id: dropDownList
model: myModel
textRole: "display"
onActivated: {
console.log("dropDownList Activated");
console.log("Read Model Value: " + model.display);
}
}
我得到的控制台日志是:
qml: dropDownList Select Activated qml: Read Model Value: undefined
display 角色值由ComboBox 本身正确显示。
我也试过model[index].display,这给了
TypeError: Cannot read property 'display' of undefined
model.get(index) 不受QAbstractListModel 支持,并且没有角色所以不适合。
我相信这一定是可能的,因为ComboBox 可以显示来自任意角色的文本。
【问题讨论】:
-
我打赌
myModel是一个上下文属性,不是吗?如果是这样,用Q_INVOKABLE/SLOT方法包装data并收集所需的角色怎么样? -
BaCaRoZzo 是正确的。您需要向模型添加可调用的方法才能直接访问它。不幸的是,
ComboBox不会向您公开模型:(
标签: javascript qt combobox qml qt5.4