在Component.onCompleted qml中执行多次语句

时间:2014-08-28 11:23:04

标签: qt qml qt-quick

我有一个矩形,我在其onComplted块上调用一个语句。但我不知道语句被执行了3次而不是只有1.这是我的代码

Rectangle {

    id: selector_button;

    signal clicked  
    state: 'pressed'

    MouseArea {
        anchors.fill: parent;

        onPressed: {
            selector_button.state == 'pressed' ? selector_button.state = "" : selector_button.state = 'pressed';
            Current.currentData("Enbaled"); 
            selector_button.clicked();
        }
    }
    states: [
        State {
            name: "pressed"
            PropertyChanges { target: selector_button; color: "#fg08Rf" }
        }
    ]

    Component.onCompleted: {
        Current.currentData("Enabled"); */
    }
}

但是我也在其他qml文件中使用这个组件,这是问题吗?如果是,我应该在哪里调用此语句,以便它只执行一次 一些onPropertyChanged上发生了类似的事情...任何想法我做错了

1 个答案:

答案 0 :(得分:2)

这是因为状态快速转发,qml引擎在呈现阶段之前解析并初始化了EACH状态。

参考。 http://qt-project.org/doc/qt-4.8/qdeclarativestates.html#state-fast-forwarding

这更像是QML的未定义行为,您的逻辑或值绑定不应该依赖于此功能"