0

嗨,我有一个DelegateChooser10-20TableView个不同DelegateChoice的 s。如何将相同的背景应用于所有选择?我想避免必须为所有选择添加相同的背景,因为这是很多中继器代码和维护头痛:

DelegateChoice: {
   Item {
         Rectangle { id: background; anchors.fill: parent; color: "blue" }
         Choice1 {}
    }
    ...
   Item {
         Rectangle { id: background; anchors.fill: parent; color: "blue" }
         Choice20 {}
    }
}
4

1 回答 1

1

首先,Item您示例中的 s 没有任何目的 - Rectangles 是Items,只是彩色而不是透明的,使顶层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 {}
    }
}
于 2021-04-27T17:16:47.020 回答