如何在 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::TabFocus
或Qt::StrongFocus
by QWidget::setFocusPolicy( Qt::FocusPolicy policy )
例如,如果您想在 3 个QLineEdit
和 1 个QCombobox
之间轮换,您必须确保他们的焦点策略设置正确。 (通常Qt::TabFocus
或Qt::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 键的主要内容,如果未能解决你的问题,请参考以下文章