QT文档翻译——键盘焦点 Keyboard Focus

文档原文:

http://doc.qt.nokia.com/latest/focus.html

 

原文标题:Keyboard Focus

 

键盘聚焦

 

    Qt的部件按照GUI设计中的惯例来处理键盘聚焦。

    基本的问题就是,用户的击键动作能够直接聚焦在屏幕上的任意窗口,或者是内嵌在特定窗口的任意部件上。当用户按下一个键时,他们期望焦点在他们期望的位置,软件必须要满足这个需求。系统必须要决断击键动作直接聚焦在哪个应用程序,应用程序的哪个窗口,窗口的哪个部件。

 

聚焦动作

 

将键盘焦点聚集在一个特定的部件上的惯例有以下几种:

1、用户按下Tab(或者Shift+Tab)

2、用户点击一个部件

3、用户按下一个键盘快捷键

4、用户使用鼠标滚轮

5、用户把焦点移动到一个窗口,这时应用程序必须决定窗口的哪个部件应该获得焦点

 

以上这些动作机制是不同的,这些动作之中,会有不同的部件接收到焦点。下面将依次介绍:

 

Tab 或者 Shift+Tab

    按下Tab键是使用键盘移动焦点最常用的方式。(有时在数据录入型应用程序中Enter的作用和Tab键一样;在Qt中通过一个event filter很容易实现)

    在常用的所有窗口系统中按下Tab键,每个窗口都有一个包含了其上所有部件的循环列表,焦点会切换到这个列表的下一个部件。Tab键会按照循环列表的一个方向切换焦点,而Shift+Tab按照相反的方向切换。按下Tab键后在部件之间切换的顺序被称为tab顺序。

    你可以使用QWidget::setTabOrder()来定制tab顺序。(如果你不这样做,Tab通常会以部件创建的顺序切换焦点)Qt Designer提供一种可视化的方式来改变tab顺序。

    因为按下Tab键非常常用,大部分可以获得焦点的部件都支持tab聚焦。有些罕见的部件是个例外,他们通过一些键盘加速器或者错误(keyboard accelerator or error)来切换焦点。

    举个例子,在一个数据录入型对话框中,有一个只有在百分之一的情况下才必要的区域。在这样的对话框中,Tab键就会跳过这个区域,对话框可以使用以下机制:

    1、如果程序可以决定这个区域是否需要,它可以在用户完成录入按下OK键,或者当用户完成其它区域的录入之后按下Enter,把焦点切换到那里。或者,将此区域包含在tab顺序中但将它禁用。当用户已经设置完其它的区域,该区域变得比较适合时,再启用它。

    2、此区域上的标签可以包括一个键盘快捷键,以使焦点可以切换到此区域上。

    关于Tab支持的另外一种例外是必须支持tab插入的文本录入型部件;几乎所有的文本编辑器都属于这一类。Qt把Ctrl+Tab当做Tab,Ctrl+Shift+Tab当做Shift+Tab,这些部件可以重新实现QWidget::event()函数,在调用QWidget::event()完成所有其它按键的正常处理之前处理Tab.然而,因为一些系统将Ctrl+Tab用作其它的用途,用户因此可能不知道Ctrl+Tab,总的来说并没有一种完全的解决办法。

 

用户点击部件

 

    这可能是在使用鼠标或者其它点式设备的电脑上比Tab键更常见的聚焦方式。

    通过点击来切换焦点比Tab更强大一些。当把焦点移动到某一个部件时,对于编辑型部件而言,文本的光标(部件内部焦点)也会移动到了鼠标点击的位置点上。

    由于这种方式如此的常见,用户很习惯这种方式,自然而然的应该是大部分部件都支持这种方式。然而,也存在一些需要的理由要规避这种方式:比如用户可能不想从当前焦点所在的部件上移除焦点。

    举例来说,再一个文本编辑器中,当用户点击‘B’(粗体)功能按钮,键盘焦点应该怎么应对?是应该保留在它所在的位置,一般来说这个时候肯定是在编辑文本当中,还是将焦点移动到‘B’按钮处?

    我们建议支持文本录入的部件同时支持点击聚焦,为了避免上述情况鼠标点击在不同的情况下会承担不同的作用。(对于按钮来说,我们推荐添加键盘快捷键,QAbstractButton及其子类可以很容易实现)

    在Qt中,只有QWidget::setFocusPolicy()函数会影响点击聚焦。

 

用户按下键盘快捷键

 

    通过键盘快捷键来切换焦点不是很常见。在打开模态对话框时会隐式发生,但是如果使用诸如QLabel::setBuddy(),QGroupBox,QTabBar提供的焦点加速器时会明确的发生。

    我们建议用户想要跳转的所有部件都支持快捷键聚焦。举例来说,一个标签对话框可以为每个页面设置键盘快捷键,因此用户可以按下比如Alt+P快捷键来跳转到打印页面。但是按键总共就只有那么多,所以为命令提供键盘快捷键显得很重要。Alt+P也可以用作粘贴、播放、打印的快捷键,比如在Standard Accelerator Keys列表中就这样用。

 

用户滚动鼠标滚轮

 

    在微软Windows操作系统中,鼠标滚轮往往是由具有键盘焦点的部件来处理。在Mac OS X和X11中,则是由获得其它鼠标事件的部件来处理。

    Qt处理这种平台差异性的方法是当使用滚轮时让部件切换键盘焦点。应用程序遵循每个部件上的正确的聚焦策略,应用程序就可以以惯用的方式在Windows,Mac OS X,和X11平台上正确的运行。

 

用户把焦点移动到窗口

 

    在这种情况下,应用程序必须决定窗口内的哪个部件获得焦点。

    这可能很简单,如果焦点之前已经在该窗口上,之前获得焦点的最后一个部件会重新获得焦点。Qt可以自动实现。

    如果焦点之前从没有聚焦到该窗口上,而且你知道焦点应该开始于哪里,在调用QWidget::show()之前调用某部件上的QWidget::setFocus(),该部件就会获得焦点。如果不这样做,Qt会挑选一个合适的部件来使它获得焦点。

Arch Linux + niri + dms:打造可编程的现代开发者桌面环境 在Linux桌面领域,Wayland作为下一代显示服务器协议,正逐步取代传统的X11,以其更安全、高效的架构为现代图形环境奠定基础。其核心原理在于通过更简洁的客户端-服务器模型直接与内核通信,减少了中间层开销,从而提升了安全性和性能。这一技术进步为构建高度定制化的桌面环境提供了可能,其价值在于赋予开发者对系统图形栈的底层控制权。基于此,平铺式窗口管理器应运而生,它通过算法自动排列窗口,极大提升了键盘操作效率和屏幕空间利用率,尤其适合追求效率的开发工作流。将Wayland协议与平铺式窗口管理器结合,便能搭建出 阅读详情

相关推荐

Qt 之 去除窗口部件被选中后的焦点虚线框

一、简述十一月已去,迎接了2016年的最后一个月。 很惭愧,十一月份就写了四篇博客,十二月好好加油,争取一天一篇。今天就先讲一讲一个简单的问题,在界面中如果有按钮,复选框、单选框等部件,我们按Tab键时会出现一个与部件相同大小的矩形虚线框,覆盖在部件上。有时候可能我们并没有在意这个细节,但是有时候这个矩形虚线框会影响界面的美观,降低了界面的颜值。先看一下如何会出现矩形虚线框。我们看上图无论我们怎么

前行之路还需前行 1万+

QT 获取控件焦点

前言: 转载请附上连接,本帖原创请勿照抄。 本文通过QT过滤器来实现所有控件的获取焦点和离开焦点事件。 本文展示了两种类型的控件获取焦点和离开焦点事件的演示。 UI界面:4个LineEdit和4个Button控件 演示UI: mainwindow.h #include <QRegExpValidator> private slots: bool eventFilter(QObject *,QEvent *); mainwindow.c...

断点 7776

qt键盘映射和焦点移动

一个qt按键映射及基于事件过滤器的按键焦点移动事件的ui界面程序,可以在arm-linux-g++下编译通过,g++编译会报错,二进制文件下载到开发板上可执行

qt 实现控件的模拟人类习惯的上下左右控制

qt 实现控件的模拟人类习惯的上下左右控制 为了做一个项目是嵌入式开发所以需要按键操作界面,所以需要一个可以模拟人类习惯的上下左右按键的控制。但是qt,不知道为什么keypress不支持上下左右的按键响应,所以在不利用到eventfilter的情况下只能,转换了wsad的四个按键。 算法思想如下:其实也不算是什么算法吧。 有两个主要的函数,一个函数负责获取到任何控件对应主界面的相对位...

weixin_30652879的博客 426

Qt 方向键控制焦点移动,改变选中的控件

Qt 实现利用方向键控制光标在不同控件上移动(本资源控件为LineEdit),上下方向键可直接移动至上一个或下一个控件,左右方向键配合Ctrl键使用,本资源借鉴相关网络资源编写。

研发流程后端开发工具,提示功能开发效率

后端开发工具

将QTablewidget中的焦点移动到其它控件上

ui->tableWidget->setTabKeyNavigation(false); 设置了这个属性后,按Tab键,焦点就不会在 tableWidget里面的item一直循环,而是焦点移动到其他控件上。

weixin_45394356的博客 3075

STM32低功耗模式下ADC采样抖动的5个隐藏陷阱及解决方案(实测避坑)

本文深入探讨了STM32低功耗模式下ADC采样抖动的5个常见陷阱及解决方案,包括多通道采样电压跃迁、外设开关信号稳定、低功耗模式与ADC时钟同步、输入阻抗失配以及基准电压稳定性问题。通过实测数据和优化代码示例,帮助工程师有效规避ADC采样数据抖动问题,提升物联网设备的测量精度和稳定性。

weixin_30316097的博客 382

QT笔记- 多个QLineEdit的默认焦点/光标怎么设置?

可以通过重写这几个lineEdi的parent部件的showEvent()事件函数,如下将lineEdit_4设置为默认光标所在地: void WizardPage2::showEvent(QShowEvent *) { static bool first = true; if(first) { ui->lineEdit_4->setFocus(); first = false; } } 不过还是建议在ui界面上,拖动Qt默认有光

qq_43058397的博客 5500

炼丹-Pyecharts: JupyterLab无法render_notebook

炼丹-Pyecharts: JupyterLab无法render_notebook问题描述Jupyter-Lab 环境下render_notebook显示空白 问题描述Jupyter-Lab 环境下render_notebook显示空白 首先需要使用pyecharts自带的config来申明一下使用pyecharts的运行环境 from pyecharts.globals import Curre...

MichaelZzzzz的博客 4689

EEGLAB安装、EDF数据导入、EEG预处理(Matlab)

目录下载和安装下载安装遇到问题及解决方案导入EDF数据EEG预处理 下载和安装 下载 链接:https://pan.baidu.com/s/17eMT6B7LgZ4PyqWvD5ixmg 提取码:12gz 安装 **第一步:**将下载下来的文件解压,修改名称为eeglab,将此文件夹存放在matlab的安装目录里的toolbox文件夹下,下图是我的路径,需要拷贝到自己相对应的路径中 第二步: 打开Matlab软件,点击主页中的设置路径 设置路径 点击添加并包含子文件夹,将eeglab文件夹添加进来,保

y18771025420的博客 1万+

QT (Keyboard Focus)键盘焦点

界面有输入事件的时候,难免会遇到多个地方需要输入,QT在focus上面有个类型需要了解: 下面看一下官方文档给我们的例子我修改了一下: Rectangle { id: window color: "white"; width: 240; height: 150 Column { anchors.centerIn: parent;...

457

具身智能落地实战:制造业、物流与电力的工业级方案设计

具身智能是一种融合感知、推理与物理执行的智能范式,其核心在于构建具备因果建模能力、多模态闭环反馈和实时动作规划的行动主体。区别于通用AI或传统自动化,它依托多模态大模型、高精度力觉/触觉传感及Sim2Real仿真技术,实现对真实物理环境的深度理解与自适应交互。技术价值体现在可解释性决策、毫秒级跨模态协同与零停机容错能力,已规模化应用于制造业质检、物流破损鉴定、电力绝缘子巡检等强约束工业场景。本文聚焦‘行业应用方案解决方案’这一高频搜索需求,系统拆解从工位筛选、分层架构设计到72小时现场交付的全链路工程方法论

weixin_30952479的博客 300

Qt之获得焦点的控件

1. 获取获得焦点的控件 QWidget *myWidget=QApplication::focusWidget; 2. 判断控件属于哪个类 if(myWidget->inherits("QComboBox"){ } 3. 创建对象使之并为其赋值 QComboBox *cbb=qobject_cast<QComboBox *>(myWidget); 4. 判...

weixin_43444901的博客 3408

当兵心理测试软件,当兵心理测试题及答案

心理测试是一种比较先进的测试方法,它是指通过一系列手段,将人的某些心理特征数量化,来衡量个体心理因素水平和个体心理差异差异的一种科学测量方法。小编为你整理了当兵心理测试题及答案,希望对你有所参考帮助。征兵心理测试题(1代表是2代表否)1、我的胃口很好。12、我早上起来的时候,多半觉得睡眠充足,头脑清醒13、我喜欢看报纸上的犯罪新闻。14、有时我常感到困难重重,无法克服。25、我时常遇见一些所谓的专...

weixin_42128393的博客 1万+

RustDesk网页端远程控制实战:如何用Web Client替代传统客户端(附安全配置建议)

本文详细介绍了RustDesk网页端远程控制的实战应用,包括其核心优势、配置流程及安全加固方案。通过Web Client替代传统客户端,用户可实现跨平台无缝体验和企业级管理效率,特别适合临时协作和移动设备使用。文章还提供了JWT身份验证、LDAP集成等安全配置建议,确保网页端访问的安全性。

weixin_30836759的博客 253

Qt中的键盘事件

(资料为互联网转载) Qt键盘事件属于Qt事件系统,所以事件系统中所有规则对按键事件都有效。下面关注点在按键特有的部分: focus 一个拥有焦点(focus)的QWidget才可以接受键盘事件。有输入焦点的窗口是活动窗口或活动窗口子窗口或子子窗口等。 焦点移动的方式有以下几种: 按下Tab或Shift+Tab 注意:文本编译器(一般需要插入Tab),或者WebView(需要Tab来移动超链接焦点) 等 Qt中,需要

yzzzfree的专栏 4737

运维颠覆!一文解锁AI赋能运维实战秘籍,效率飙升!

将AI应用于运维工作是一场极具价值的变革,从故障预测与诊断到自动化任务执行,再到资源管理优化,AI都展现出巨大潜力。尽管在实践过程中会面临数据质量、模型复杂性等挑战,但通过合理的技术选型和解决方案,我们能够充分挖掘AI的优势,实现运维工作的高效、智能转型。持续探索和创新AI在运维领域的应用,将为企业的数字化发展提供坚实保障。在科技飞速发展的当下,运维领域正经历着深刻变革,AI的融入成为提升运维效率与质量的关键。本文将深入实战,带你领略AI如何在运维各环节大显身手,让你的运维工作开启智能高效新模式。

探索云原生与智能化驱动下的安全运维新范式。关注DevSecOps、可观测性、AIOps等前沿领域,与您共赴技术前沿。 401

Qt 界面设计总结

把工作中学到的技巧记录下来: 1. 子窗体或控件,重写paintEvent事件,画边框、背景、文字、图片效果比较好。

xiarong715的专栏 1万+

【LangChain编程:从入门到实践】实现多模态代理

【LangChain编程:从入门到实践】实现多模态代理 关键词:LangChain, 多模态代理, 自然语言处理, 机器学习, 知识图谱, 对话系统, 代码生成, AI代理 1. 背景介绍 随着人工智

欢迎来到我的优快云空间!这里聚焦AI大模型应用实战,分享前沿技术、实战案例与开发经验。 581

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

QWidget之键盘焦点

在Qt中,键盘事件和QWidget的focus密不可分:一般来说,一个拥有焦点(focus)的QWidget或者grabKeyboard()的QWidget才可以接受键盘事件。

ken2232的博客 1067

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

qt做拖拉控件功能_Qt控件编辑功能

功能支持选中效果;支持自由拉伸效果;支持双击鼠标左键编辑功能;支持键盘 ↑↓←→按键移动;支持按住ctrl + 鼠标左键 多选控件功能;支持键盘delete键,删除选中控件功能;简述根据QtDesigner的控件选中,拉伸效果,用过Qt的盆友都很熟悉Qt的Designer,这个我就不多说了,我们先看看QtDesigner中的效果效果图核心代码//用法试例 formWindowManager = n...

weixin_39609423的博客 464

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Qt模拟键盘按键与组合键

转:http://blog.youkuaiyun.com/hqyhqyhq/article/details/50895629 Tab键:             QKeyEvent tabKey(QEvent::KeyPress, Qt::Key_Tab, Qt::NoModifier);             QCoreApplication::sendEvent(this, &tabKey

idea的博客 5721

Qt实现完全按键控制Ui的简单框架

虽然自己一直在学其他的知识,但是在公司近期在做一个项目

我是波罗学 6638

Qt之Tab键切换焦点顺序

简介 Qt的窗口部件按用户的习惯来处理键盘焦点。也就是说,其出发点是用户的焦点能定向到任何一个窗口,或者窗口中任何一个部件。 焦点获取方式比较多,例如:鼠标点击、Tab键切换、快捷键、鼠标滚轮等。 习惯性的,我们经常会使用Tab键来控制焦点顺序,比如:用户注册时,个人信息输入框焦点的切换、执行按钮焦点的切换等。 在添加部件之后,...

weixin_34268310的博客 1167
上一篇: E398 opcode指令开启关闭无SIM卡操作支持
下一篇: LINUX X86下移植安装mplayer
hanover
博客等级 码龄21年 5粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值