Приобрести книгу можно на сайте ozon.ru и в электронном виде на Google Play:
6 thoughts on “Глава 14 – События”
Здравствуйте, Макс!
Хотел бы прокомментировать один момент в программе обработки событий мыши (Листинги 14.1 – 14.3). Не сразу смог понять строки кода в Листинге 14.3 в реализации методов modifiersInfo и buttonsInfo, где приводится условия, подобные этому:
if(pe->buttons() & Qt::LeftButton) { strButtons += “Left “; } .
Не мог понять как работает в условии операция побитового “И”, и только поковырявшись в справке понял, что, например, для условия, которое приведено выше, если была нажата левая клавиша мыши, то pe->buttons() возвращает значение Qt::LeftButton, и следовательно побитовое “И” между ними, т.к. они равны, возвращает “не ноль”, во всех остальных случаях (например, при нажатии правой кнопки мыши) данная операция возвращает “ноль”.
И еще, если кому интересно, при нажатии нескольких кнопок мыши возвращаются значения нажатых кнопок с операцией побитового “ИЛИ” (например: Qt::LeftButton | Qt::RightButton, когда зажаты левая и правая кнопка соответственно).
Здравствуйте, Макс!
Хотел бы прокомментировать один момент в программе обработки событий мыши (Листинги 14.1 – 14.3). Не сразу смог понять строки кода в Листинге 14.3 в реализации методов modifiersInfo и buttonsInfo, где приводится условия, подобные этому:
if(pe->buttons() & Qt::LeftButton) { strButtons += “Left “; } .
Не мог понять как работает в условии операция побитового “И”, и только поковырявшись в справке понял, что, например, для условия, которое приведено выше, если была нажата левая клавиша мыши, то pe->buttons() возвращает значение Qt::LeftButton, и следовательно побитовое “И” между ними, т.к. они равны, возвращает “не ноль”, во всех остальных случаях (например, при нажатии правой кнопки мыши) данная операция возвращает “ноль”.
И еще, если кому интересно, при нажатии нескольких кнопок мыши возвращаются значения нажатых кнопок с операцией побитового “ИЛИ” (например: Qt::LeftButton | Qt::RightButton, когда зажаты левая и правая кнопка соответственно).
Вячеслав, Спасибо за комментарий!
Стр. 233 подраздел “Событие таймера. Класс QTimerEvent”. В коде опечатка, в условии вместо “event -> timerId()” должно быть “e -> timerId()”.
Да, это действительно опечатка. В коде должно быть “e” вместо “event”.
Стр. 242 написано: “В центральном методе получения и обработки событий event() (листинг 14.18)… “, имеется ввиду листинг 14.8.
Да, имеется ввиду листинг 14.8. Спасибо, Вячеслав!