如何在 QML 中访问基于 QObjectList 的模型中的某些元素



假设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: ""
}
}

相关内容

  • 没有找到相关文章

最新更新