当我执行以下操作时,我试图通过一个信号发送一个QMouseEvent。
void mouseReleaseEvent(QMouseEvent* event)
{
emit mouseEvent(event);
}调试时,我发现事件是正确的。但是,在一个插槽中接收到它时,某些值在事件中是错误的。就像event->button()是错误的,event->globalX()是正确的,但event->x()是错误的。我不明白为什么在通过时隙时,这个事件会改变。
发布于 2013-09-26 10:20:00
我不会用上面提到的方式那样做。正如您可能注意到的,QMouseEvent指针指向非常量对象,因此没有什么可以保证它不会改变。最有可能的情况是,event对象在向父对象传播过程中被修改,因此不应该依赖它。相反,可以使用QMouseEvent属性来传递,如位置等:
void mouseReleaseEvent(QMouseEvent* event)
{
emit mouseEventCaught(event->pos());
}https://stackoverflow.com/questions/19025396
复制相似问题