当前位置: 首页 > news >正文

QML 部件获得焦点触发的全局槽函数 onActiveFocusItemChanged

在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);
    }
}

相关文章:

  • JavaScript 内置对象-字符串对象
  • Docker Remote API未授权访问漏洞复现
  • DeepSeek 助力 Vue 开发:打造丝滑的日期选择器(Date Picker),未使用第三方插件
  • 在conda虚拟环境中安装jupyter lab-----deepseek问答记录
  • lighten() 函数被弃用:替代方案color.scale()或者color.adjust()
  • C语言基础16:二维数组、字符数组
  • 《DeepSeek训练算法:开启高效学习的新大门》
  • 虚拟机如何添加硬盘
  • Java中CompletableFuture异步工具类
  • 【ENSP】链路聚合的两种模式
  • pypthon字符串与日期转换
  • 6.2.4 基本的数据模型
  • linux笔记:shell中的while、if、for语句
  • Spring 如何解决循环依赖以及那些无法解决的循环依赖
  • 【贝克街迷宫疑云:用侦探思维破解Java迷宫算法】
  • java练习(26)
  • 《open3d pyqt》Alpha重建
  • el-table使用fixed=“right“时固定多列,最左边的左边框不显示
  • C++常用数学函数详解与代码示例
  • C++ ——static关键字
  • 傻瓜式做网站/教育培训机构排名
  • 广州最新疫情公布/今日头条搜索优化怎么做
  • wordpress 音乐插件/seo搜索引擎优化就业指导
  • 铁法能源公司网站/竞价托管收费标准
  • 石家庄做网站百度推广/专门看广告的网站
  • 做网站需要什么/培训心得体会范文