网站建设关键词无锡网站优化
在qml的window窗口中,假如添加里许多其他部件,当这些部件改变时,会有一个全局部件焦点改变槽函数触发,就是 onActiveFocusItemChanged
可以通过此槽函数就可以知道当前焦点在哪一个部件上,也可以做一些自动化测试等;
如下案例,在窗体中添加两个按钮,通过鼠标点击按钮或者键盘左右键触发焦点,最后onActiveFocusItemChanged 槽函数就会监听到有焦点事件了,可以通过activeFocusItem.objectName 将当前获得焦点的部件的名字打印出来,前提是部件有设置了名字。
import QtQuick 2.9
import QtQuick.Window 2.2import QtQuick.Controls 2.2Window {visible: truewidth: 640height: 480title: qsTr("Hello World")color: "white"Button {id: btn1width: 50height: 50objectName: "btn1"background: Rectangle {border.color: btn1.focus ? "red" : "black";color: "pink"}// 键盘右键按下Keys.onRightPressed: {btn2.focus = true}}Button {id: btn2x:70width: 50height: 50objectName: "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);}
}