【Qt】Qt之Tab键切换焦点顺序【转】
简介
Qt的窗口部件按用户的习惯来处理键盘焦点。也就是说,其出发点是用户的焦点能定向到任何一个窗口,或者窗口中任何一个部件。
焦点获取方式比较多,例如:鼠标点击、Tab键切换、快捷键、鼠标滚轮等。
习惯性的,我们经常会使用Tab键来控制焦点顺序,比如:用户注册时,个人信息输入框焦点的切换、执行按钮焦点的切换等。
效果
实现方式
接口说明:
static void QWidget::setTabOrder(QWidget * first, QWidget * second)
Puts the second widget after the first widget in the focus order.
也就是说,按下Tan键后,焦点会从第一个控件切换到第二个控件。
注意,如果第二个控件Tab顺序改变,则应该这样设置一个顺序链:
//设置a、b、c、d顺序
setTabOrder(a, b); //a->b
setTabOrder(b, c); //a->b->c
setTabOrder(c, d); //a->b->c->d
而不是这样:
//错误
setTabOrder(c, d); // c->d
setTabOrder(a, b); // a->b 和 c->d
setTabOrder(b, c); // a->b->c, 但不是c->d
源码
这里以三个按钮如三个输入框为例,来说明Tab的顺序。
设置获取焦点时的样式,以便我们更清楚的观看效果。
QPushButton *pButton1 = new QPushButton(this);
QPushButton *pButton2 = new QPushButton(this);
QPushButton *pButton3 = new QPushButton(this);
QLineEdit *pLineEdit1 = new QLineEdit(this);
QLineEdit *pLineEdit2 = new QLineEdit(this);
QLineEdit *pLineEdit3 = new QLineEdit(this);
pButton1->setText("1");
pButton2->setText("3");
pButton3->setText("5");
pLineEdit1->setText("6");
pLineEdit2->setText("4");
pLineEdit3->setText("2");
pButton1->setStyleSheet("QPushButton:focus{border:none; background: green; color: white;}");
pButton2->setStyleSheet("QPushButton:focus{border:none; background: green; color: white;}");
pButton3->setStyleSheet("QPushButton:focus{border:none; background: green; color: white;}");
pLineEdit1->setStyleSheet("QLineEdit:focus{border:2px solid green;}");
pLineEdit2->setStyleSheet("QLineEdit:focus{border:2px solid green;}");
pLineEdit3->setStyleSheet("QLineEdit:focus{border:2px solid green;}");
QWidget::setTabOrder(pButton1, pLineEdit3);
QWidget::setTabOrder(pLineEdit3, pButton2);
QWidget::setTabOrder(pButton2, pLineEdit2);
QWidget::setTabOrder(pLineEdit2, pButton3);
QWidget::setTabOrder(pButton3, pLineEdit1);
就这样,简简单单的一个接口解决了我们的问题。有兴趣的小伙伴可以看下focusNextChild。
原文作者:一去丶二三里
作者博客:去作者博客空间
【Qt】Qt之Tab键切换焦点顺序【转】的更多相关文章
- Qt之Tab键切换焦点顺序
简介 Qt的窗口部件按用户的习惯来处理键盘焦点.也就是说,其出发点是用户的焦点能定向到任何一个窗口,或者窗口中任何一个部件. 焦点获取方式比较多,例如:鼠标点击.Tab键切换.快捷键.鼠标滚轮等. 习 ...
- [QT] Tab键切换焦点顺序
在Qt Designer 中点击“编辑Tab顺序“按钮进入编辑Tab顺序模式,如下图: 之后界面会变成这样: 随处点击右键即可弹出菜单,选择 "制表符顺序列表..." 出现 剩下 ...
- jQuery----jquery实现Tab键切换
使用Jquery实现tab键切换,代码简洁易懂,实现逻辑清晰明了.具体总结如下: 需求分析: 鼠标进入tab切换模块,鼠标当前的模块上边框变为红色,并显示对应的商品名称.鼠标离开后,上边框恢复原色,图 ...
- WinForm中变Enter键为Tab键实现焦点转移的方法
if (e.KeyCode == Keys.Enter) { //this.SelectNextControl(this.ActiveControl,true, true, true, true); ...
- (转)js控制窗口失去焦点(包括屏蔽Alt+Tab键切换页面)
本章内容转自:http://www.cnblogs.com/BoKeYuanVinson/articles/3360954.html 转载自网络贴吧: 页面脚本是无法截获alt键的,不过可以变通一下, ...
- Unity3D - UGUI实现Tab键切换输入框、按钮(按Tab键切换高亮显示的UI)
1.在Hierarchy面板创建能被选中的UI(Button.InputField等). 2.在Canvas上创建C#脚本 TabCutPichon. 3.编写脚本. using System.Col ...
- iOS 自定义的CodeSnippets添加按下tab键切换到指定输入位置
在需要使用tab来选中并输入内容的地方,添加: <#输入待覆盖的内容#>
- gwt CellTable中的控件按Tab键切换
默认是 cellTable.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.ENABLED); 如果要Tab,则设置为DISABLED; 并将其t ...
- 转载一篇关于tab键与focus的文章
Focusable HTML 元素中,并不是所有元素都可以获得焦点,有如下元素可以获得焦点: a, area, button, input, object, select, textarea,这些元素 ...
随机推荐
- Android——AnimationDrawable 实现动画
Android中的AnimationDrawable可以加载Drawable资源实现帧动画.实现步骤如下: 一.设置动画播放的帧资源 <?xml version="1.0" ...
- A标签使用javascript:伪协议
一.前言 今天,遇到一个别人挖的坑,问题是这样的. 做了一个列表页,可以筛选数据,有很多筛条件.主要是有input复选框和<a>标签两种.如图: 其中房价的筛选条件使用<a>标 ...
- iOS 定位系统 知识
最近在做考勤定位系统 总结一些定位系统的知识. 后期会出一份算法主要攻克地球坐标和火星坐标转换的 1.关于百度的火星坐标定位策略 地图SDK/定位SDK的定位策略: WIFI + 基站 +GPS 三者 ...
- Linq中使用Left Join
use Test Create table Student( ID ,) primary key, ) not null ) Create Table Book( ID ,) primary key, ...
- Android小项目之十二 设置中心的界面
------- 源自梦想.永远是你IT事业的好友.只是勇敢地说出我学到! ---------- 按惯例,写在前面的:可能在学习Android的过程中,大家会和我一样,学习过大量的基础知识,很多的知识点 ...
- 使用 xcode 8 构建版本 iTunes Connect 获取不到应用程序的状态
今天在提交 APP 审核版本的时候iTunes Connect 一直获取不到应用程序的状态,原因是,14号 xcode 8一出 直接升级使用 xcode 8 打包发布包,然后直接用 xcode8 构建 ...
- 百度地图开发之poi检索,线路规划
官方文档 http://lbsyun.baidu.com/index.php?title=androidsdk/guide/key 先去官方文档申请秘钥下载压缩文件等操作,参考 百度地图的秘钥申请 ...
- 小黄豆CRM软件安装
小黄豆CRM软件(官方网址:http://www.xhdcrm.com,演示地址:http://demo.xhdcrm.com)是一款开源免费的客户关系管理系统,其客户跟进模块简单易用.安装环境是wi ...
- 未能正确加载“radlangsvc.package,radlangsvc.vs,version=10.0.0,culture=neutra
1: 参考 http://blog.csdn.net/woaizhoulichao1/article/details/6911809 2: 开 始-->所有程序 -->Mircosoft ...
- 【JS对象、JSON字符串】之间的相互转换
在Firefox,chrome,opera,safari,ie9,ie8等浏览器直接可以用JSON对象的stringify()和parse()方法. 1.JSON.stringify(obj)将JS对 ...