如何在 Qt 小部件中捕获 Tab 键

Posted

技术标签:

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

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

【问题讨论】:

【参考方案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 键”

以上是关于如何在 Qt 小部件中捕获 Tab 键的主要内容,如果未能解决你的问题,请参考以下文章

如何对 FLTK 中的小部件进行排序以使箭头键导航正常工作?

Qt 制表符顺序键

如何在 Qt 层次结构的根小部件中获取鼠标按下事件

如何同时在不同的 QT 小部件上显示多个视频

qt tab 小部件右侧和底部有白色边框

使用 TAB 键浏览小部件