【发布时间】:2019-07-24 08:13:08
【问题描述】:
是否可以在 qml 中创建一个 GridView,它的子项在模型中定义,所以我可以为我的 GridView 项目创建一个完整的动态子视图,例如我想在模型中定义 10 个不同的矩形作为我的数据委托。
为此,我想创建一个 GridView 并从模型中设置委托的 data 属性
GridView {
model: ListModel{
ListElement{
childs:Item{
// data is a list<Object> , so item here is wrong
//this part is wrong i am looking for correct way of doing this
//error : cannot contain nested elements
Button{
}
Button{
}
}
}
}
delegate: Rectangle{
data:childs
}
}
这段代码解释了我的问题的逻辑。但它不正确。
我的模型项目将在矩形内,但它的孩子是完全动态的,它可能是 100 个我不知道的项目。
或者问这个问题的另一种方法是“我可以在 ListModel 中有一个组件吗?”
更新
所以如果我想使用它,它最终会像这样“让我们说文件名是 MyWidget”:
MyWidget{
model:ListModel{
//and here we go how can i set data of GridView's delegate
}
}
【问题讨论】:
-
我猜你不只想要 Rectangle,因为那时你可以只将属性封装在 ListModel 中而不是 Rectangle 本身?
-
@Amfasis 将其视为卡片的 GridView,卡片的内容是动态的
-
好的,我明白了。也许您想尝试这种方法:forum.qt.io/topic/80826/dynamic-delegate-in-repeater/4
-
@Amfasis 如果我使用加载器,那么我应该为每个孩子定义组件,这不是动态的,正如我从这个解决方案中理解的那样
-
那么,您的模型来自哪里,由谁填充?如果像在您的示例中一样,它来自 QML,那么我个人认为没有区别,但如果它来自 C++,则情况不同,但在这种情况下,您可以自己创建组件(请参阅forum.qt.io/topic/42087/…)