我正在尝试通过信号发送QMouseEvent,当我执行此
时void mouseReleaseEvent(QMouseEvent* event)
{
emit mouseEvent(event);
}
关于调试我发现事件是正确的。 但是在插槽中接收它时,事件中的某些值是错误的。就像event-> button()是错误的而且event-> globalX()是对的,但是event-> x()是错误的。 我不明白为什么在通过插槽时事件会发生变化。
答案 0 :(得分:4)
我不会以上述方式这样做。正如您可能已经注意到的那样,QMouseEvent
指针指向非常量对象,因此没有任何内容可以保证它不会发生变化。很可能event
对象在传播到父对象期间被修改,因此您不应该依赖它。而是使用QMouseEvent
属性来传递,例如位置等:
void mouseReleaseEvent(QMouseEvent* event)
{
emit mouseEventCaught(event->pos());
}