0

当我执行此操作时,我正在尝试通过信号发送 QMouseEvent

void mouseReleaseEvent(QMouseEvent* event)
{
    emit mouseEvent(event);
}

在调试时我发现事件是正确的。但是在插槽中接收它时,事件中的某些值是错误的。就像 event->button() 是错误的并且 event->globalX() 是正确的,但是 event->x() 是错误的。我不明白为什么在通过插槽时事件会发生变化。

4

1 回答 1

4

我不会以上述方式这样做。您可能已经注意到,QMouseEvent指针指向非常量对象,因此没有任何东西可以保证它不会改变。很可能该event对象在传播到父对象期间被修改,因此您不应该依赖它。而是使用QMouseEvent属性来传递,比如位置等:

void mouseReleaseEvent(QMouseEvent* event)
{
    emit mouseEventCaught(event->pos());
}
于 2013-09-26T10:20:00.977 回答