QML部件获得焦点触发的全局槽函数onActiveFocusItemChanged
- 手机
- 2025-09-04 13:54:02

在qml的window窗口中,假如添加里许多其他部件,当这些部件改变时,会有一个全局部件焦点改变槽函数触发,就是 onActiveFocusItemChanged
可以通过此槽函数就可以知道当前焦点在哪一个部件上,也可以做一些自动化测试等;
如下案例,在窗体中添加两个按钮,通过鼠标点击按钮或者键盘左右键触发焦点,最后onActiveFocusItemChanged 槽函数就会监听到有焦点事件了,可以通过activeFocusItem.objectName 将当前获得焦点的部件的名字打印出来,前提是部件有设置了名字。
import QtQuick 2.9 import QtQuick.Window 2.2 import QtQuick.Controls 2.2 Window { visible: true width: 640 height: 480 title: qsTr("Hello World") color: "white" Button { id: btn1 width: 50 height: 50 objectName: "btn1" background: Rectangle { border.color: btn1.focus ? "red" : "black"; color: "pink" } // 键盘右键按下 Keys.onRightPressed: { btn2.focus = true } } Button { id: btn2 x:70 width: 50 height: 50 objectName: "btn2" background: Rectangle { border.color: btn2.focus ? "red" : "black"; } // 键盘左键按下 Keys.onLeftPressed: { btn1.focus = true } } // 焦点改变触发 onActiveFocusItemChanged: { console.log("Active focus item changed", activeFocusItem, "object name:", activeFocusItem.objectName); } }QML部件获得焦点触发的全局槽函数onActiveFocusItemChanged由讯客互联手机栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“QML部件获得焦点触发的全局槽函数onActiveFocusItemChanged”
下一篇
6.2.4基本的数据模型