设置小部件是否可以获得焦点,或以何种方式获得焦点。方式有两个:
FocusPolicy::ClickFocus | 表示鼠标点击小部件时会获得焦点 |
FocusPolicy::TabFocus | 表示可通过Tab键切换可获得焦点 |
FocusPolicy::WheelFocus | 表示可通过鼠标滚轮切换获得焦点 |
FocusPolicy::NoFocus | 不可获得焦点(默认设置) |
setFocusProxy()函数的作用是, 当前窗口接收到焦点时, 将交由指定的窗口来代理, 函数原型如下:
void QWidget::setFocusProxy(QWidget * w);
clearFocus()函数负责即时清除小部件上的焦点(如果有的话)。
focusInEvent()函数和focusOutEvent()函数在当前小部件获得焦点或失去焦点时自动被调用, 为虚函数。QFocusEvent 为其形参类型,QFocusEvent::reason()函数返回一个枚举类型Qt::FocusReason,该枚举用于表示小部件是以何种方式失去或得到的焦点。
一个focusInEvent()函数的重写示例如下:
virtual void focusInEvent(QFocusEvent * event)
{switch (event->reason()) {case Qt::FocusReason::MouseFocusReason:cout << "焦点来自鼠标点击" << endl;break;case Qt::FocusReason::TabFocusReason:cout << "焦点来自Tab键切换" << endl;break;case Qt::FocusReason::MenuBarFocusReason:cout << "焦点来自菜单栏展开" << endl;break;case Qt::FocusReason::PopupFocusReason:cout << "焦点来自窗口弹出" << endl;break;default:break;}
}
焦点事件QFocusEvent的reason()函数返回值是由用户调用焦点设置函数setFocus()或setFocus(Qt::FocusReason reason)决定的。
reason()函数返回值整理如下表:
用户调用的焦点设置函数 | reason()函数的返回值 |
---|---|
setFocus() | Qt::FocusReason::OtherFocusReason |
setFocusPolicy(Qt::FocusPolicy::ClickFocus) 或是其它FocusPolicy类型参数 | Qt::FocusReason::MouseFocusReason 或是其它与FocusPolicy参数对应的FocusReason类型参数 |
setFocus(Qt::FocusReason reason) | reason |
未调用任何焦点设置函数 | Qt系统自动判别FocusReason类型 |
本文发布于:2024-01-28 07:12:33,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/17063971595702.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |