我们假设我有一个这样的组件
RowLayout {
MyItem {
Layout.fillWidth: true
Layout.fillHeight: true
... // other properties
}
MyItem {
Layout.fillWidth: true
Layout.fillHeight: true
... // other properties
}
}
其中MyItem.qml
的定义如下
Rectangle {
... // other properties
// Layout.fillWidth: true
// Layout.fillHeight: true
}
我可以将Layout.fillWidth
加到MyItem
,这样我就不需要在RowLayout
中重复一次了吗?
答案 0 :(得分:1)
我可以将Layout.fillWidth放到MyItem中,所以我不需要在RowLayout中重复它吗?
我认为问题的答案在其中:如果您不想重复,只需使用Repeater
类型。文档说明了
Repeater实例化的项目按顺序插入,作为Repeater父项的子项。插入在转发器在其父堆栈列表中的位置后立即开始插入。这允许在布局中使用Repeater 。
文档中的示例使用 1 test1.txt
2 test2.txt
Please select a file number: 3
Please select a file number: 2
You have selected 'test2.txt'
但是同样的方法可以应用于其他布局,例如Row
。实际上,它适用于具有RowLayout
性质的附加属性的任何类型(“在父级中插入项目”)。
这是一个例子。假设我们已经定义了Repeater
类型。
Example
我们可以将布局属性添加到import QtQuick 2.5
Rectangle {
property alias text: inner.text
color: "steelblue"
Text {
id: inner
anchors.centerIn: parent
font.pixelSize: 30
}
}
内的Example
类型,例如:
Repeater
import QtQuick 2.5
import QtQuick.Window 2.2
import QtQuick.Layouts 1.1
Window {
id: window
width: 600
height: 400
visible: true
RowLayout {
id: row
anchors.fill: parent
Repeater {
model: 6
delegate : Example {
text: index
Layout.fillWidth: true // layout options added in the delegate
Layout.fillHeight: true
Layout.alignment: Qt.AlignCenter
Layout.maximumWidth: parent.width / model.length
}
}
}
}
的{{3}}属性可以像往常一样是字符串数组或其他模型。
这种方法足够灵活,可以组合多个Repeater
来创建更复杂的结构。例如,请参阅以下示例,其中Repeater
用于填充Text
内的屏幕:
GridLayout
答案 1 :(得分:0)
是的,你可以这样做,但是当你决定在没有名为Layout.fillWidth
的附加属性的上下文中使用该组件时,它会以错误结束,或者更常见的是,当你决定不这样做时将它用作布局中的顶部元素。