Перемещение указателя

Чтобы обработать перемещение указателя мыши необходимо переопределить метод mouseMoveEvent(). Прототип метода:

virtual void mouseMoveEvent(QMouseEvent *event)

Через параметр доступен экземпляр класса QMouseEvent, который позволяет получить дополнительную информацию о событии. Методы этого класса мы уже рассматривали в предыдущем разделе. Следует учитывать, что метод button() при перемещении мыши возвращает значение константы Qt::NoButton.

По умолчанию метод mouseMoveEvent() вызывается только в том случае, если при перемещении удерживается нажатой какая-либо кнопка мыши. Это сделано специально, чтобы не создавать лишних событий при обычном перемещении указателя мыши. Если необходимо обрабатывать любые перемещения указателя в пределах компонента, то следует вызвать метод setMouseTracking() из класса QWidget и передать ему значение true. Чтобы обработать все перемещения внутри окна нужно дополнительно захватить мышь с помощью метода grabMouse(). Прототипы методов:

void setMouseTracking(bool enable)
void grabMouse()
void grabMouse(const QCursor &cursor)

Метод position() объекта события возвращает позицию точки в системе координат текущего компонента. Чтобы преобразовать координаты точки в систему координат родительского компонента или в глобальную систему координат следует воспользоваться следующими методами из класса QWidget:

  • mapToGlobal() — преобразует координаты точки из системы координат компонента в глобальную систему координат. Прототипы метода:
QPoint mapToGlobal(const QPoint &pos) const
QPointF mapToGlobal(const QPointF &pos) const
  • mapFromGlobal() — преобразует координаты точки из глобальной системы координат в систему координат компонента. Прототипы метода:
QPoint mapFromGlobal(const QPoint &pos) const
QPointF mapFromGlobal(const QPointF &pos) const
  • mapToParent() — преобразует координаты точки из системы координат компонента в систему координат родительского компонента. Если компонент не имеет родителя, то метод аналогичен методу mapToGlobal(). Прототипы метода:
QPoint mapToParent(const QPoint &pos) const
QPointF mapToParent(const QPointF &pos) const
  • mapFromParent() — преобразует координаты точки из системы координат родительского компонента в систему координат данного компонента. Если компонент не имеет родителя, то метод аналогичен методу mapFromGlobal(). Прототипы метода:
QPoint mapFromParent(const QPoint &pos) const
QPointF mapFromParent(const QPointF &pos) const
  • mapTo() — преобразует координаты точки из системы координат компонента в систему координат родительского компонента parent. Прототипы метода:
QPoint mapTo(const QWidget *parent, const QPoint &pos) const
QPointF mapTo(const QWidget *parent, const QPointF &pos) const
  • mapFrom() — преобразует координаты точки из системы координат родительского компонента parent в систему координат данного компонента. Прототипы метода:
QPoint mapFrom(const QWidget *parent, const QPoint &pos) const
QPointF mapFrom(const QWidget *parent, const QPointF &pos) const

Учебник C++ (Qt Creator и MinGW)
Учебник C++ (Qt Creator и MinGW) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов