Странное поведение курсора в Qt

В Qt (C ++, MinGW, Windows 7) QCursor::setPos(...) Кажется, изменить положение курсора на уровне приложения, но не на системном уровне. Например, если вы перехватите mouseMoveEvent и отменить движение курсора (с помощью setMouseTracking(false) так что вы делаете эту отмену только при нажатии кнопки мыши), тогда вы не увидите движения курсора, пока вы удерживаете кнопку мыши нажатой. Но затем, когда вы отпустите кнопку и немного переместитесь, курсор переместится на то место, где он был бы, если бы вы не заблокировали его движение. Это нормальное поведение? Как обойти это так, чтобы курсор мыши менялся на системном уровне?

Если это не достаточно ясно, я могу дать фрагмент кода.

0

Решение

Перемещение курсора QWidget всегда использует координаты виджета. Для глобального позиционирования мыши вы должны вместо этого использовать виджет рабочего стола (QDesktopWidget). Вы можете получить это через QApplication::desktop() статическая функция Пример:

QApplication::desktop()->cursor().setPos(0,0);

Это должно переместить курсор мыши в верхний левый угол рабочего стола.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]