当光标位于我的小部件中时,我正在调用QCursor.setPos()。当我这样做时,调用mouseMoveEvent,当我不想要它时。在Java / Swing中,我可以移动光标而不发送事件。我可以做类似的事情,所以调用QCursor.setPos()所以不要发送mouseMoveEvent吗?
答案 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调用)。不是很优雅,但它似乎可靠地工作。