【问题标题】:How to capture Tab Key in Qt widget如何在 Qt 小部件中捕获 Tab 键
【发布时间】:2014-06-09 09:58:46
【问题描述】:

我想实现自己的序列,以使用 Tab 键更改活动子小部件的焦点。如何捕获 Tab 键按下事件?我正在使用 Qt5.2

【问题讨论】:

    标签: qt qt5 qwidget


    【解决方案1】:

    如果你想用 Tab 改变焦点,你不需要做这些工作,Qt 有它作为一个特性。

    首先:将所需的小部件设置为Qt::TabFocusQt::StrongFocus by QWidget::setFocusPolicy( Qt::FocusPolicy policy )

    例如,如果您想在 3 个QLineEdit 和 1 个QCombobox 之间轮换,您必须确保他们的焦点策略设置正确。 (通常Qt::TabFocusQt::StrongFocus 将被设置为默认值,但有时you might want to escape some widgets from being tabbed

    二:进入设计师模式,点击“Edit Tab Order”进入tab-order编辑模式

    第三:看到数字后,点击它们直到你得到想要的序列顺序。

    (图片来自Qt官网)

    【讨论】:

    • 这是对我问题的准确回答。但是,在某些情况下,编辑 Tab 键顺序并不足以解决问题。例如,如果表单位于选项卡小部件中,并且在切换到页面上的最后一个小部件后切换到下一个选项卡页面。问的时候我应该更具体一点:)
    • @UgaBuga 就像我在帖子中所说:“有时您可能希望避免某些小部件被标签。”(查看链接以获取更多信息)在您的示例中,您只需将 TabWidget 设置为 Qt::ClickFocus,这样您就不会使用 Tab 键切换到下一个标签页。此外,焦点策略可以动态设置,所以只要 imo 做你想做的就足够了。
    【解决方案2】:

    有一个鼠标按下事件或一个事件过滤器,到达你有一个QKeyEvent的地步

    然后只有在tab被按下时才做一些事情

    key_event->button() == Qt::Key_Tab
    

    【讨论】:

    • 以上显示标签焦点抱歉没有完全阅读问题描述,这回答了标题所说的内容,捕获了一个标签键事件
    • title 是“如何捕获 Tab 键”
    猜你喜欢
    • 2015-12-02
    • 2011-09-19
    • 2012-05-16
    • 2010-11-21
    • 1970-01-01
    • 1970-01-01
    • 2010-12-06
    • 1970-01-01
    • 2011-01-28
    相关资源
    最近更新 更多