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

Qt 焦点系统关键点总结

1.1 焦点窗口

指的是当前时刻拥有键盘输入的窗口。

Qt提供了如下接口,用于设置窗口是否是”可获取焦点“窗口:

void QWidget::setFocusPolicy(Qt::FocusPolicy policy);
Qt::FocusPolicy      
Qt::TabFocus      与焦点链相关,详解见下一小节
Qt::ClickFocus      
Qt::StrongFocus
Qt::WheelFocus    
Qt::NoFocus      不可获取焦点

setFocusPolicy()的参数值可以是上述5个值中的任意一种,当参数值为前4个的时候,当前窗口可以获取焦点,当参数值为Qt::Nofocus的时候,当前窗口不可获取焦点。

1.2 焦点链

Qt除了把窗口对象组织成树状结构外,还把这些窗口组织成了一个双向链表结构,这个链表叫做焦点链。焦点链上每个节点代表一个窗口,默认情况下,窗口在焦点链上的先后位置,与用户把窗口添加到窗口树的先后顺序有关,越早添加到窗口树上的窗口,其在焦点链中的位置越靠前。

通过按Tab或者Shift+Tab,可以实现焦点在各个窗口之间循环移动。焦点移动顺序与焦点链相关,它的移动规律如下:

1)点击Tab键,焦点链指针向后移动,直至碰到第一个FocusPolicy为TabFocus的窗口,并设置该窗口为焦点窗口;

2)点击Shift+Tab,焦点链指针向前移动,直至碰到第一个FocusPolicy为TabFocus的窗口,并设置该窗口为焦点窗口;

Qt提供了下列结构,用于获取焦点链信息:

//返回此部件焦点链中的下一个部件
QWidget* QWidget::nextInFocusChain() const;
//返回此部件焦点链中的前一个部件
QWidget* QWidget::previousInFocusChain() const;

此外,我们还可以调整焦点链中节点的先后顺序

// 将焦点顺序中的部件 second 放置在部件 first 之后
static void QWidget::setTabOrder(QWidget* first, QWidget* second);

比如,若默认的焦点链顺序为 a-b-c-d,则:

setTabOrder(d,c); //改变后焦点链的顺序为 a-b-d-c
setTabOrder(b,a); //改变后焦点链的顺序为 b-a-d-c

1.3 焦点事件

与焦点事件处理相关的函数如下:

void QWidget::focusInEvent(QFocusEvent *event);
void QWidget::focusOutEvent(QFocusEvent *event);

当焦点从一个部件移动到另一个部件时,会触发QFocusEvent事件,这个事件会被发送给原焦点窗口和当前焦点窗口,原焦点窗口执行focusOutEvent(),新焦点窗口执行focusInEvent()

http://www.lryc.cn/news/376753.html

相关文章:

  • SpringBoot+Maven项目的配置构建
  • c#调用c++dll方法
  • ACM算法学习路线、清单
  • sqoop的安装配置
  • 代码随想录算法训练营第六十四天 | 图论理论基础、深搜理论基础、广搜理论基础、98. 所有可达路径
  • 【教师资格证考试综合素质——法律专项】教师法笔记以及练习题
  • 图卷积网络(Graph Convolutional Network, GCN)
  • 【diffusers 极速入门(一)】pipeline 实际调用的是什么? __call__ 方法!
  • 【DPDK学习路径】二、DPDK简介
  • python基础 002 - 2 常用数据类型
  • 爆赞!GitHub首本Python开发实战背记手册,标星果然百万名不虚传
  • Spring源码-xxxAware实现类和BeanPostProcessor接口调用过程
  • Uni-app x
  • Python 基础:文件
  • WebForms 母版页
  • Java应用打包成Docker镜像
  • 什么是自动驾驶中的CopyCat?
  • 为什么没人详细说过智能猫砂盆?最受欢迎的好用智能猫砂盆解析!
  • AI视频智能监管赋能城市管理:打造安全有序的城市环境
  • 多态性(Java)
  • 国际期货行情相关术语
  • LeetCode20.有效的括号
  • 尚玩助手广告变现app开发
  • Anti-human IL-10 mAb (12G8), biotin:Mabtech热销品
  • 【植物大战僵尸杂交版】致敬传奇游戏玩家——一个普通人的六年坚持
  • 【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 部门组队编程(200分) - 三语言AC题解(Python/Java/Cpp)
  • 民生银行信用卡中心金融科技24届春招面经
  • HTML李峋同款跳动的爱心代码(双爱心版)
  • 【linux】内核从tcp层调用IP层摸索中
  • Python 中的 Pandas(数据分析与处理)