Qt 用于不带包装项目的多个项目的QML中继器
我想创建一个类似的视图(为了简洁起见,我省略了一列) 一直在尝试用网格布局来实现这一点。问题是我可能有很多行。这取决于我的型号。所以,我希望能够有一个中继器,它将重复相同的n个元素。然而,它似乎只包含一个组件。我想重复一个元素,但这不是GridLayout计算间距的方式。所以,这似乎是不可能的,除非使用动态对象创建 我试图重复的实际项目的代码如下Qt 用于不带包装项目的多个项目的QML中继器,qt,qml,Qt,Qml,我想创建一个类似的视图(为了简洁起见,我省略了一列) 一直在尝试用网格布局来实现这一点。问题是我可能有很多行。这取决于我的型号。所以,我希望能够有一个中继器,它将重复相同的n个元素。然而,它似乎只包含一个组件。我想重复一个元素,但这不是GridLayout计算间距的方式。所以,这似乎是不可能的,除非使用动态对象创建 我试图重复的实际项目的代码如下 Text { Layout.alignment: Qt.AlignHCenter
Text {
Layout.alignment: Qt.AlignHCenter
text: abbr
color: "#545454"
}
VerticalRule {
Layout.fillHeight: true
}
ColumnLayout {
Repeater {
model: getModel()
Image {}
}
}
VerticalRule {
Layout.fillHeight: true
}
ColumnLayout {
Repeater {
model: getModel()
Image {}
}
}
那么,在qml中有什么方法可以轻松做到这一点呢?或者说,当涉及到这种超特定的表格式时,我是不是有点依靠自己。除非我找到一种方法,否则你不能。您可以使用ListView使行本身具有GridView。。。。我想。你可以用GridLayout;使用多个中继器,Gridlayout中的每列一个中继器。以下代码段复制了您的文本布局:
GridLayout {
columns: 2
Text {
Layout.columnSpan: 2
Layout.alignment: Qt.AlignHCenter
text: 'text'
}
Text {
Layout.column: 1
Layout.row: 1
text: 'header'
}
Repeater {
model: list
Text {
Layout.column: 0
Layout.row: index + 2
Layout.alignment: Qt.AlignTop
text: label
}
}
Repeater {
model: list
Column {
Layout.column: 1
Layout.row: index + 2
Repeater {
model: items
Text { text: item }
}
}
}
ListModel {
id: list
ListElement {
label: 'text1'
items: [
ListElement { item: 'item1' },
ListElement { item: 'item2' }
]
}
ListElement {
label: 'text2'
items: [
ListElement { item: 'item3' },
ListElement { item: 'item4' },
ListElement { item: 'item5' },
ListElement { item: 'item6' },
ListElement { item: 'item7' }
]
}
}
}
GridLayout {
columns: 2
Text {
Layout.columnSpan: 2
Layout.alignment: Qt.AlignHCenter
text: 'text'
}
Text {
Layout.column: 1
Layout.row: 1
text: 'header'
}
Repeater {
model: list
Text {
Layout.column: 0
Layout.row: index + 2
Layout.alignment: Qt.AlignTop
text: label
}
}
Repeater {
model: list
Column {
Layout.column: 1
Layout.row: index + 2
Repeater {
model: items
Text { text: item }
}
}
}
ListModel {
id: list
ListElement {
label: 'text1'
items: [
ListElement { item: 'item1' },
ListElement { item: 'item2' }
]
}
ListElement {
label: 'text2'
items: [
ListElement { item: 'item3' },
ListElement { item: 'item4' },
ListElement { item: 'item5' },
ListElement { item: 'item6' },
ListElement { item: 'item7' }
]
}
}
}