在qml页面中使用ComboBox时,一般会有以下用法:
ComboBox{id: boxmodel: yourBindingModelonCurrentIndexChanged: { //业务代码}
}
通常不会有什么问题,切换下拉列表时触发onCurrentIndexChanged,然后执行业务代码。
但是,如果有
currentIndex: yourBindingIndex
即给combox组件的currentIndex进行了数据绑定,那么在初始化UI时,如果yourBindingIndex有有效值,则会触发onCurrentIndexChanged,此时并不是我们手动操作下拉列表触发的,这种情况一般是预期以外的,onCurrentIndexChanged内业务代码的执行也会造成程序异常。那如何避免呢?
使用onActivated
onActivated: {}
看官方文档描述:
This signal is similar to currentIndex changed, but will only be emitted if the combo box index was changed by the user, not when set programmatically.
index is the activated model index, or -1 if a new string is accepted.
The corresponding handler is onActivated.