qml中ComboBox组件onCurrentIndexChanged与onActivated的使用

在qml页面中使用ComboBox时,一般会有以下用法:

json 复制代码
ComboBox{
	id: box
	model: yourBindingModel
	onCurrentIndexChanged: {   
		//业务代码
	}	
}  

通常不会有什么问题,切换下拉列表时触发onCurrentIndexChanged,然后执行业务代码。

但是,如果有

json 复制代码
currentIndex: yourBindingIndex

即给combox组件的currentIndex进行了数据绑定,那么在初始化UI时,如果yourBindingIndex有有效值,则会触发onCurrentIndexChanged,此时并不是我们手动操作下拉列表触发的,这种情况一般是预期以外的,onCurrentIndexChanged内业务代码的执行也会造成程序异常。那如何避免呢?

使用onActivated

json 复制代码
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.

相关推荐
enyp801 小时前
Qt中多线程
开发语言·qt
玉树临风江流儿4 小时前
QT日志级别设置
qt
二进制人工智能11 小时前
【QT5 多线程示例】互斥锁
开发语言·c++·qt
狄加山67511 小时前
QT 学习笔记2
笔记·qt·学习
吃面不喝汤6613 小时前
Qt 多线程设计:死循环与信号槽的权衡
开发语言·qt
cpp加油站15 小时前
无需qt-creator,使用Trae从0到1生成qt的开发、构建、调试环境
开发语言·ide·qt
Antonio9151 天前
【Q&A】Qt中直接渲染和离屏渲染效率哪个高?
开发语言·qt·信息可视化
七夕先生1 天前
【Qt】自定义标题栏 Title Bar的两种方案
开发语言·qt
钱彬 (Qian Bin)1 天前
QT Quick(C++)跨平台应用程序项目实战教程 3 — 项目基本设置(窗体尺寸、中文标题、窗体图标、可执行程序图标)
c++·人工智能·音乐播放器·qml·界面设计·qt quick