我有一个矩形,我在其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上发生了类似的事情...任何想法我做错了
答案 0 :(得分:2)
这是因为状态快速转发,qml引擎在呈现阶段之前解析并初始化了EACH状态。
参考。 http://qt-project.org/doc/qt-4.8/qdeclarativestates.html#state-fast-forwarding
这更像是QML的未定义行为,您的逻辑或值绑定不应该依赖于此功能"