【发布时间】:2018-10-10 16:28:27
【问题描述】:
我在 Windows 上使用 Qt5。 有没有办法区分 Qt 小部件是通过鼠标单击还是从表格按键获得焦点?
【问题讨论】:
我在 Windows 上使用 Qt5。 有没有办法区分 Qt 小部件是通过鼠标单击还是从表格按键获得焦点?
【问题讨论】:
是的,有。覆盖QWidget::focusInEvent,使用焦点事件的QFocusEvent::reason方法获取原因!
简单示例:
void MyWidget::focusInEvent(QFocusEvent *event) {
qDebug() << event->reason();
QWidget::focusInEvent(event);
}
注意:如果您想从现有的小部件中获取此信息,您始终可以安装一个事件过滤器。有关如何执行此操作的示例,请参阅 https://doc.qt.io/qt-5/qobject.html#installEventFilter。
【讨论】: