【问题标题】:Does QML support state inheritance & overriding?QML 是否支持状态继承和覆盖?
【发布时间】:2012-06-20 01:47:14
【问题描述】:

我有一个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 { ... }
    }
}

但是,MenuButton 中定义的pressed 状态似乎根本不起作用。它是否被CoolButton 中定义的pressed 状态隐藏?我怎样才能覆盖它?

应该是这样的吗?

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

【问题讨论】:

    标签: qt4 qml


    【解决方案1】:

    我是 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 { ... }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-11
      • 1970-01-01
      相关资源
      最近更新 更多