mouseMoved忽略QCursor.setPos()?

时间:2011-01-17 01:03:42

标签: qt cursor mouseevent

当光标位于我的小部件中时,我正在调用QCursor.setPos()。当我这样做时,调用mouseMoveEvent,当我不想要它时。在Java / Swing中,我可以移动光标而不发送事件。我可以做类似的事情,所以调用QCursor.setPos()所以不要发送mouseMoveEvent吗?

3 个答案:

答案 0 :(得分:3)

这似乎对我有用:

myWidget->clearFocus();
QCursor::setPos(pos);
myWidget->setFocus();

答案 1 :(得分:0)

看起来如果没有触发器mouseMoveEvent就无法使用setPos, 也许你考虑创建一个:

bool disableMoveProcess;

并将其作为防止逻辑运行的标志?

我使用此方法调用QListWidgetItem :: setSelected 没有make QListWidget :: itemSelectionChanged触发我的代码。

答案 2 :(得分:0)

我最后只是跟踪鼠标移动之间的差异,所以如果我向右移动5个鼠标,我会存储五个并忽略下一个事件,如果它将我向左移动5个(这意味着它可能由setPos调用)。不是很优雅,但它似乎可靠地工作。