qt 设置焦点 跳到下个控件_Qt控件焦点切换

在Qt中,可以使用QWidget的静态方法`setTabOrder`来设置控件间焦点切换的顺序,实现类似QQ登陆时通过Tab键在账号、密码输入框间切换的效果。正确设置顺序应按链式进行,如`setTabOrder(a, b); setTabOrder(b, c);`。同时,使用`setFocusPolicy`可以控制控件是否接受焦点及焦点策略。例如,将QCheckBox设置为`Qt::NoFocus`,则该控件无法获得焦点。焦点切换的实现涉及到了双向链表的更新和窗口内的控件检查。" 112660596,10540857,C#中的BlockingCollection阻塞队列应用解析,"['C#编程', '多线程', '并发处理', '队列', '数据结构']
摘要由CSDN通过智能技术生成

们日常切换控件,例如QQ登陆的账号和密码输入框就可以通过Tab键切换焦点。

 

图1 qq切换焦点

Qt中QWidget提供了一个静态方式实现该效果

其中也包含介绍使用

[static] void QWidget::setTabOrder(QWidget *first, QWidget *second)

Puts the second widget after the first widget in the focus order.

Note that since the tab order of the second widget is changed, you should order a chain like this:

setTabOrder(a, b); // a to b

setTabOrder(b, c); // a to b to c

setTabOrder(c, d); // a to b to c to d

not like this:

// WRONG

setTabOrder(c, d); // c to d

setTabOrder(a, b); // a to b AND c to d

setTabOrder(b, c); // a to b to c, but not c to d

If first or second has a focus proxy, setTabOrder() correctly substitutes the proxy.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

实现效果如下

 

图2 Tab切换焦点

主要部分源码

QPushButton *p = new QPushButton("按钮");

QLineEdit *l = new QLineEdit("输入框");

QCheckBox *c = new QCheckBox("复选框");

QComboBox *b = new QComboBox;

setTabOrder(p, l);

setTabOrder(l, c);

setTabOrder(c, b);

1

2

3

4

5

6

7

当然也可以让控件屏蔽焦点的使用,或者接受响应其他类型的焦点方式

主要使用

void setFocusPolicy(Qt::FocusPolicy policy)

1

其中Qt::FocusPolicy 这个枚举类型定义了一个控件可以用来获取键盘焦点的各种策略。

C

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值