有没有办法区分 Qt 小部件是通过鼠标单击还是从表格按键获得焦点?

Posted

技术标签:

【中文标题】有没有办法区分 Qt 小部件是通过鼠标单击还是从表格按键获得焦点?【英文标题】:Is there a way to distinguish, whether a Qt widget got focus from mouse clicking or from table key pressing? 【发布时间】:2018-10-10 16:28:27 【问题描述】:

我在 Windows 上使用 Qt5。

【问题讨论】:

【参考方案1】:

是的,有。覆盖QWidget::focusInEvent,使用焦点事件的QFocusEvent::reason方法获取原因!

简单示例:

void MyWidget::focusInEvent(QFocusEvent *event) 
    qDebug() << event->reason();
    QWidget::focusInEvent(event);

注意:如果您想从现有的小部件中获取此信息,您始终可以安装一个事件过滤器。有关如何执行此操作的示例,请参阅 https://doc.qt.io/qt-5/qobject.html#installEventFilter。

【讨论】:

以上是关于有没有办法区分 Qt 小部件是通过鼠标单击还是从表格按键获得焦点?的主要内容,如果未能解决你的问题,请参考以下文章

在 Qt 中使用鼠标中键单击和拖动移动整个窗口

Qt 的鼠标事件

在 Qt 中为整个小部件设置样式表

如何使用 pytest-qt 鼠标单击在 QTableWidget 中选择一个项目?

如何使布局填充qt选项卡小部件内的所有内容?

用鼠标改变 QWidget 的宽度