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 没有任何作用 - RectangleItem,只是着色而不是透明,使顶层 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 {}
    }
}