假设C++我创建了一个QList<QObject *> myObjects
,其中包含几个从QObject
派生的自定义对象。
然后通过setContextProperty( "myModel", QVariant::fromValue( myObjects ) );
将其暴露给QML
问题是,在我的 QML 代码中,我如何在myModel
中获取和使用特定元素(按索引((这是一个QList
(。例如,我想从列表中随机取出一个元素并显示它?
示例在这里:http://doc.qt.io/qt-5/qtquick-models-objectlistmodel-example.html,其中模型的所有元素都显示在 ListView 中,而我只想显示其中的一个(或几个(。
它很容易...
要从模型中获取物料编号 I,请执行以下操作:
myModel[i]
以及访问其属性/角色:
myModel[i].propertyName
要从列表中获取项目,您可以使用[]
运算符:
myModel[index]
QList
的元素类似于javascript中的数组,因为QML基于后者。
下面的示例演示如何以随机形式获取名称(它仅替换示例中的代码(。
view.qml
import QtQuick 2.0
import QtQuick.Layouts 1.3
import QtQuick.Controls 1.4
//![0]
ColumnLayout{
ListView {
width: 100; height: 100
model: myModel
delegate: Rectangle {
height: 25
width: 100
color: model.modelData.color
Text {
text: name
}
}
}
Button {
text: "random"
onClicked: {
t.text = myModel[ Math.floor(Math.random()*myModel.length)].name;
}
}
Text{
id: t
text: ""
}
}