В более чем одном из моих приложений Qt я заметил, что всякий раз, когда нажимается строка меню, последний сигнал, отправленный из виджета в GUI, отправляется повторно, прежде чем вызывается действие меню. В большинстве случаев это не имеет значения; но в некоторых случаях это имеет большое значение.
В некоторых случаях, когда сигнал виджета подключен к одному из его собственных слотов, проще начать слот с
if (hasFocus())
{
// ...
}
... блокировать, чтобы такие ложные сигналы, не генерируемые пользователем, фактически нажимающим на виджет, можно было игнорировать.
Однако недавно я обнаружил, что это поведение является причиной нескольких связанных ошибок, когда ложные сигналы передаются через несколько слоев программы перед тем, как на них воздействуют, поэтому просто проверить, находится ли конкретный виджет в фокусе, нетривиально реализовать.
Поэтому мой вопрос:
Большое спасибо,
Стивен.