mouseMoved игнорировать QCursor.setPos ()? - PullRequest
0 голосов
/ 17 января 2011

Я вызываю QCursor.setPos (), когда курсор находится внутри моего виджета. Когда я это делаю, вызывается mouseMoveEvent, когда я этого не хочу. В Java / Swing я могу перемещать курсор без отправки событий. Могу ли я сделать что-то подобное, поэтому вызовы QCursor.setPos (), чтобы не отправлять mouseMoveEvent?

Ответы [ 3 ]

3 голосов
/ 04 июня 2013

Мне кажется, это работает:

myWidget->clearFocus();
QCursor::setPos(pos);
myWidget->setFocus();
0 голосов
/ 01 марта 2011

В итоге я просто отслеживал разницу между движениями мыши, поэтому, если я получу движение мыши, например, 5 вправо, я сохраню пять и проигнорирую следующее событие, если оно сдвинет меня на 5 влево (что означает, что он, вероятно, вызывается setPos). Не очень элегантно, но, похоже, работает надежно.

0 голосов
/ 17 января 2011

Похоже, что нет способа установитьPos без триггера mouseMoveEvent, может быть, вы подумаете о создании:

bool disableMoveProcess;

и создании его в качестве флага для проверки работы вашей логики?

Я используюэтот метод для вызова QListWidgetItem :: setSelected без make QListWidget :: itemSelectionChanged вызывает мой код.

...