Attached property reuse

This warning category is spelled [attached-property-reuse] by qmllint.

Using attached type already initialized in a parent scope

What happened?

You initialized a propagating attached type multiple times.

注意: This mostly happens for attached types that inherit from QQuickAttachedPropertyPropagator .

Why is this bad?

Propagating attached objects consume memory for each instantiation but only need to be initialized once.

范例

import QtQuick
import QtQuick.Templates as T
import QtQuick.Controls.Material // contains the Material attached type
T.ToolBar {
    id: control
    // first instantiation of Material's attached property
    property color c: Material.toolBarColor
    background: Rectangle {
         // second instantiation of Material's attached property, wrong!
        color: Material.toolBarColor
    }
}
					

To fix this warning, query the attached type from the parent:

import QtQuick
import QtQuick.Templates as T
import QtQuick.Controls.Material // contains the Material attached type
T.ToolBar {
    id: control
    // first instantiation of Material's attached property
    property color c: Material.toolBarColor
    background: Rectangle {
        // use control's attached property, correct!
        color: control.Material.toolBarColor
    }
}