2016-11-11 3 views
1

на данный момент мне нужно закодировать некоторые события мыши в C++. Я знаю, что есть события мыши для печати, выпуска, перемещения, двойного щелчка.qt C++ несколько событий мыши различного порядка

Что мне интересно, так это как различать события, когда они используются в другом порядке. Давайте скажу, я:

Мышь -> Клик -> движение мышей -> Мышь релиз

Как я могу различить первую второй Mouse-ход события?

Я решил, что с помощью флага «Mouse-click-flag», который установлен в true при запуске Мышь-click-event. В процедуре mouse-move у меня есть проверка if-Statement (Mouse-click-flag = true), которая определяет погоду или не запускает процедуру Mouse-click-event-procedure. Это работает, но это кажется очень сложным.

Как решить эту проблему?

Спасибо

itelly

+0

Если отслеживание мыши отключено, вы получаете события перемещения только тогда, когда мышь не работает. Если вам не нужно знать, когда движется мышь, даже когда кнопка мыши не опускается? Вы также можете получить нажатые кнопки мыши из объекта 'QMouseEvent' (http://doc.qt.io/qt-5/qmouseevent.html#buttons). – thuga

ответ

1

Что вы делаете правильно. Вы также хотели бы установить Mouse-click-flag в false на событие мыши, но вы, вероятно, поняли это и просто не сказали этого. Вы указываете, что при первом перемещении вы запускаете процедуру мыши-события-события. Есть ли причина, по которой вы не запускаете это в рутине mousePressEvent? Иногда есть веские причины ... просто подтверждаю, что это то, что вам нужно.

Если вы беспокоитесь о событиях перемещения мыши, когда пользователь имеет указатель мыши, то, как сказал туга, отключите отслеживание мыши, вызвав «setMouseTracking» в виджет и установите для него значение false. Тогда вы будете получать только шаблоны click-move-release.