前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[QT]实现Tab键切换控件的两种方式及禁止Tab切换的简单方法

[QT]实现Tab键切换控件的两种方式及禁止Tab切换的简单方法

作者头像
祥知道
发布2020-03-10 15:40:10
3.8K0
发布2020-03-10 15:40:10
举报
文章被收录于专栏:祥的专栏祥的专栏
  1. 代码下载

1. 方法1 - 通过Qt Designer进行编辑

Qt Designer进行编辑特别简单,只需要将其切换到编辑Tab顺序的模式下,然后按照想要的Tab切换顺序进行点击,就OK了,而且所见即所得。

效果:

2. 方法2 - 通过代码进行编辑调整

现在通过代码将上述顺序变为:

lineEdit_5 -> lineEdit_4 -> btn_3 -> btn_2 -> btn_1

在构造函数中进行设置,将会覆盖在ui文件中设定的顺序。

调用的是QWidget的一个静态函数。

static void QWidget::setTabOrder(QWidget * first, QWidget * second) Puts the second widget after the first widget in the focus order.

代码语言:javascript
复制
Tab_switch::Tab_switch(QWidget *parent)
    : QWidget(parent)
{
    ui.setupUi(this);

    // 设置焦点切换顺序 
    // lineEdit_5 -> lineEdit_4 -> btn_3 -> btn_2 -> btn_1
    QWidget::setTabOrder(ui.lineEdit_5, ui.lineEdit_4); // 5 -> 4
    QWidget::setTabOrder(ui.lineEdit_4, ui.btn_3);      // 4 -> 3  [5 -> 4 -> 3]
    QWidget::setTabOrder(ui.btn_3, ui.btn_2);           // 3 -> 2  [5 -> 4 -> 3 -> 2]
    QWidget::setTabOrder(ui.btn_2, ui.btn_1);           // 2 -> 1  [5 -> 4 -> 3 -> 2 -> 1]       
}

注意: 大致就是要改就改一套顺序链。

效果:

3. 禁止某个控件相应Tab键进行切换

代码语言:javascript
复制
Tab_switch::Tab_switch(QWidget *parent)
    : QWidget(parent)
{
    ui.setupUi(this);

    // 设置焦点切换顺序
    // lineEdit_5 -> lineEdit_4 -> btn_3 -> btn_2 -> btn_1
    QWidget::setTabOrder(ui.lineEdit_5, ui.lineEdit_4); // 5 -> 4
    QWidget::setTabOrder(ui.lineEdit_4, ui.btn_3);      // 4 -> 3  [5 -> 4 -> 3]
    QWidget::setTabOrder(ui.btn_3, ui.btn_2);           // 3 -> 2  [5 -> 4 -> 3 -> 2]
    QWidget::setTabOrder(ui.btn_2, ui.btn_1);           // 2 -> 1  [5 -> 4 -> 3 -> 2 -> 1]

    // 禁止 lineEdit_4 响应 Tab 键
    ui.lineEdit_4->setFocusPolicy(Qt::NoFocus);
    // 现在顺序: lineEdit_5 -> btn_3 -> btn_2 -> btn_1

}

效果:

附上Qt::FocusPolicy的定义,这个enum类型的作用就是设置焦点策略。

代码语言:javascript
复制
    enum FocusPolicy {
        NoFocus = 0,
        TabFocus = 0x1,
        ClickFocus = 0x2,
        StrongFocus = TabFocus | ClickFocus | 0x8,
        WheelFocus = StrongFocus | 0x4
    };

在之前的博客 [QT]屏蔽Tab键切换控件焦点 https://blog.csdn.net/humanking7/article/details/80654775 中用了事件过滤器进行屏蔽Tab键切换,而现在只需要简简单单一行代码就搞定了,简直是…….无语啊,所以还是要多去看看帮助文档中的类成员函数,书到用时方恨少啊。

4. 代码下载

代码下载地址: https://download.csdn.net/download/humanking7/10479754

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 方法1 - 通过Qt Designer进行编辑
  • 2. 方法2 - 通过代码进行编辑调整
  • 3. 禁止某个控件相应Tab键进行切换
  • 4. 代码下载
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档