【发布时间】:2014-06-09 09:58:46
【问题描述】:
我想实现自己的序列,以使用 Tab 键更改活动子小部件的焦点。如何捕获 Tab 键按下事件?我正在使用 Qt5.2
【问题讨论】:
我想实现自己的序列,以使用 Tab 键更改活动子小部件的焦点。如何捕获 Tab 键按下事件?我正在使用 Qt5.2
【问题讨论】:
如果你想用 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官网)
【讨论】:
Qt::ClickFocus,这样您就不会使用 Tab 键切换到下一个标签页。此外,焦点策略可以动态设置,所以只要 imo 做你想做的就足够了。
有一个鼠标按下事件或一个事件过滤器,到达你有一个QKeyEvent的地步
然后只有在tab被按下时才做一些事情
key_event->button() == Qt::Key_Tab
【讨论】: