Qt/QML - 如何对 DelegateChooser 中的所有 DelegateChioces 应用相同的背景?
Qt/QML - How to apply the same background to all DelegateChioces in DelegateChooser?
您好,我有一个 DelegateChooser
用于 TableView
,有 10-20 个不同的 DelegateChoice
。我怎样才能对所有选项应用相同背景?我想避免必须为所有选择添加相同的背景,因为那是很多转发器代码和令人头疼的维护问题:
DelegateChoice: {
Item {
Rectangle { id: background; anchors.fill: parent; color: "blue" }
Choice1 {}
}
...
Item {
Rectangle { id: background; anchors.fill: parent; color: "blue" }
Choice20 {}
}
}
首先,您示例中的 Item
没有任何作用 - Rectangle
是 Item
,只是着色而不是透明,使顶层 Item
重复。其次,我会这样制作一个新文件 MyBackground.qml
:
import QtQuick 2.0
Rectangle {
color: "blue"
// any other necessary background properties here
}
然后让您的 ChoiceN
文件继承自 MyBackground
,例如:
// ChoiceN.qml file
import QtQuick 2.0
MyBackground {
// ChoiceN.qml contents here as normal
}
您的示例代码变为:
DelegateChoice: {
Choice1 {}
...
Choice20 {}
}
或者,如果您无权访问您的 ChoiceN 文件内容,您也可以从外部封装它们:
DelegateChoice: {
MyBackground {
Choice1 {}
}
...
MyBackground {
Choice20 {}
}
}
您好,我有一个 DelegateChooser
用于 TableView
,有 10-20 个不同的 DelegateChoice
。我怎样才能对所有选项应用相同背景?我想避免必须为所有选择添加相同的背景,因为那是很多转发器代码和令人头疼的维护问题:
DelegateChoice: {
Item {
Rectangle { id: background; anchors.fill: parent; color: "blue" }
Choice1 {}
}
...
Item {
Rectangle { id: background; anchors.fill: parent; color: "blue" }
Choice20 {}
}
}
首先,您示例中的 Item
没有任何作用 - Rectangle
是 Item
,只是着色而不是透明,使顶层 Item
重复。其次,我会这样制作一个新文件 MyBackground.qml
:
import QtQuick 2.0
Rectangle {
color: "blue"
// any other necessary background properties here
}
然后让您的 ChoiceN
文件继承自 MyBackground
,例如:
// ChoiceN.qml file
import QtQuick 2.0
MyBackground {
// ChoiceN.qml contents here as normal
}
您的示例代码变为:
DelegateChoice: {
Choice1 {}
...
Choice20 {}
}
或者,如果您无权访问您的 ChoiceN 文件内容,您也可以从外部封装它们:
DelegateChoice: {
MyBackground {
Choice1 {}
}
...
MyBackground {
Choice20 {}
}
}