Я использую Qt5 на Windows.Есть ли способ отличить, получил ли виджет Qt фокус от щелчка мышью или нажатия клавиши таблицы?
Да, есть.Переопределите QWidget::focusInEvent и используйте метод QFocusEvent::reason события фокуса, чтобы выяснить причину!
QWidget::focusInEvent
QFocusEvent::reason
Простой пример:
void MyWidget::focusInEvent(QFocusEvent *event) { qDebug() << event->reason(); QWidget::focusInEvent(event); }
Примечание: Если вы хотите получить эту информацию из уже существующего виджета, вы всегда можете вместо этого установить фильтр событий.См. https://doc.qt.io/qt-5/qobject.html#installEventFilter для примера того, как это сделать.