4

私は状態CoolButtonを持っていpressedます:

// CoolButton.qml:
BorderImage {
    ...
    states: State {
        name: "pressed"
        when: mouseArea.pressed == true
        PropertyChanges { target: shade; opacity: 0.5 }
    }
}

そしてMenuButton拡張しますCoolButton

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

ただし、でpressed定義された状態MenuButtonはまったく機能していないようです。pressedで定義された状態によって隠されていCoolButtonますか? どうすればそれを上書きできますか?

それはこのようなものであるべきですか?

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

1 に答える 1

2

私は 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 { ... }
    }
}
于 2012-07-12T23:41:16.890 に答える