Как определить состояние мыши в Qt без MouseEvent - PullRequest
7 голосов
/ 21 августа 2009

Хорошо, используя Qt, я хотел бы знать, как определить текущее состояние мыши в любой момент времени - без a MouseEvent.

Используя QCursor :: pos (), вы можете получить его положение, но есть ли способ определить текущее состояние кнопок?

По сути, я ищу, чтобы проверить состояние мыши, когда таймер отключается, чтобы он не был связан с каким-либо конкретным MouseEvent, и поэтому нет MouseEvent для запроса. Мне нужно знать, как запрашивать состояние мыши, в частности состояние кнопок, без MouseEvent.

О, и я использую Qt 3, поэтому, если такая функция была добавлена ​​в Qt 4, но отсутствует в Qt 3, она мне мало поможет (хотя было бы неплохо узнать об этом) .

Ответы [ 2 ]

15 голосов
/ 26 августа 2009

Qt :: MouseButtons QApplication :: mouseButtons () [статические] :

Возвращает текущее состояние кнопок мыши. Электрический ток состояние обновляется синхронно, поскольку очередь событий освобождается от событий который самопроизвольно изменит состояние мыши (QEvent::MousePress и QEvent::MouseRelease событий).

Следует отметить, что это может не отражать фактические кнопки, удерживаемые на устройство ввода во время вызова, а скорее кнопки мыши, как последний раз сообщалось в одном из вышеуказанных событий. Если нет кнопок мыши удерживается Qt::NoButton возвращается.

Редактировать: хм, я только что заметил, что вы спросили о Qt3.3. Боюсь, этот ответ относится к Qt4.

1 голос
/ 22 августа 2009

Трудно ли вам не использовать MouseEvent? Или вы можете использовать MouseEvents косвенно?

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

...