Как вы сказали, для этой функции нет сигналов. У вас есть два основных варианта.
Вариант 1 - Подкласс:
class FocusEmittingButton(QPushButton):
#...
def focusInEvent(self, event):
# emit your signal
Затем вы можете подключиться к этому сигналу в коде вашего клиента. Также, при необходимости, вы можете использовать дизайнерскую функцию Promote To
для перевода каждой кнопки в тип FocusEmittingButton
. Вам потребуется только один раз создать подкласс, а затем убедиться, что все кнопки одного типа.
Вариант 2 - Использование QApplication.focusChanged
Вы также можете использовать QApplication.focusChanged(oldQWidget, newQWidget)
. Таким образом, вам не нужно создавать подклассы и переопределять события фокуса. Вместо этого вы подключаетесь к сигналу QApplication.focusChanged
, а затем отвечаете обработчиком.