我有2个qml文件。
我想从第一个qml文件中设置第二个qml fromperty。
**first.qml**
var cmponent = Qt.createComponent("second.qml");
var newObj = cmponent.createObject(swipeView);
newObj.pageIndex = i;
swipeView.insertItem(swipeView.currentIndex+i,newObj)
并插入SwipeView。
其中,' pageIndex
'是第二个qml的整数属性。
在第二个qml文件中,我有一个带有单元格的GridLayout。
我需要根据动态pageIndex
属性
second.qml
宣布该财产。
property int pageIndex: 0
onPageIndexChanged:{
console.log("onPageIndexChanged :" +pageIndex)
home_grid.update()
}
触发onPageIndexChanged
方法但是,我想根据属性值设置网格单元格。
问题是 在组件初始化时
var cmponent = Qt.createComponent("second.qml");
将单元格加载到GridLayout中。
如何解决/解决此问题。
答案 0 :(得分:0)
我认为你想要的是:
(我的例子用于你的第一个问题) 它应该说明我的意见。 当然,您可以将不同的视图放在不同的文件中。在创建对象时,您只需要将相同的模型传递给两者。
ListModel {
id: lm
ListElement { width: 40; height: 40 }
[...]
ListElement { width: 40; height: 40 }
}
SwipeView {
width: 200
height: 800
clip: true
currentIndex: 0
Repeater {
model: Math.ceil(lm.count / 6)
delegate: ListView {
width: 200
height: 800
property int viewIndex: index
model: DelegateModel {
model: lm
groups: DelegateModelGroup { name: 'filter' }
Component.onCompleted: {
for (var i = viewIndex * 6; i < lm.count && i < (viewIndex * 6) + 6; i++) {
items.setGroups(i, 1, ['items', 'filter'])
}
}
filterOnGroup: 'filter'
delegate: Rectangle {
width: 180
height: 30
border.width: 1
Text {
anchors.centerIn: parent
text: index
}
}
}
}
}
}
GridView {
clip: true
x: 300
width: 600
height: 600
model: lm
delegate: TestObj {
}
}
以下是代理人TestObj
Rectangle {
width: model.width
height: model.height
property alias text: myText.text
Text {
id: myText
anchors.centerIn: parent
text: index
}
}
当然你也可以写:
delegate: TestObj {
width: model.width; height: model.height; text: index
}
可以最小化第二个QML文件的依赖关系。