Qt4 QML是否支持状态继承&;最重要的

Qt4 QML是否支持状态继承&;最重要的,qt4,qml,Qt4,Qml,我有一个CoolButton,它有一个按下的状态: // CoolButton.qml: BorderImage { ... states: State { name: "pressed" when: mouseArea.pressed == true PropertyChanges { target: shade; opacity: 0.5 } } } 而菜单按钮扩展了CoolButton: // MenuButton.

我有一个
CoolButton
,它有一个
按下的状态:

// CoolButton.qml:
BorderImage {
    ...
    states: State {
        name: "pressed"
        when: mouseArea.pressed == true
        PropertyChanges { target: shade; opacity: 0.5 }
    }
}
菜单按钮
扩展了
CoolButton

// MenuButton.qml:
CoolButton {
    ...
    states: State {
        name: "pressed"
        PropertyChanges { ... }
    }
}
但是,在
菜单按钮
中定义的
按下
状态似乎根本不起作用。它是否被
冷却按钮
中定义的
按下状态隐藏?我怎样才能覆盖它

应该是这样的吗

// MenuButton.qml:
CoolButton {
    ...
    states: State {
        name: "pressed"
        extend: "CoolButton.pressed"
        PropertyChanges { ... }
    }
}

我是QML新手,但据我所知,您不能扩展或覆盖已定义的组件。 相反,您可以封装它们,如下所示:

// CoolButton.qml:
BorderImage {
    ...
    states: State {
        name: "pressed"
        when: mouseArea.pressed == true
        PropertyChanges { target: shade; opacity: 0.5 }
    }
}
// MenuButton.qml:
CoolButton {
    property alias cb: encapsulatedCB
    CoolButton {id: encapsulatedCB; }
    ...

    states: State {
        name: "pressed"
        PropertyChanges { ... }
    }
}
封装可以如下所示:

// CoolButton.qml:
BorderImage {
    ...
    states: State {
        name: "pressed"
        when: mouseArea.pressed == true
        PropertyChanges { target: shade; opacity: 0.5 }
    }
}
// MenuButton.qml:
CoolButton {
    property alias cb: encapsulatedCB
    CoolButton {id: encapsulatedCB; }
    ...

    states: State {
        name: "pressed"
        PropertyChanges { ... }
    }
}