首页 > 解决方案 > 在 QT 中以编程方式执行鼠标事件

问题描述

我想从一个小部件传输鼠标事件并在另一个小部件上执行它,我通过信号发送鼠标事件。

void Eventhost::mousePressEvent(QMouseEvent* event)
{
    emit SignalControl(event);
}

此事件被发送到在此处处理它的小部件;

void EventReceiver::mousePressEvent(QMouseEvent * event)
{
    event->accept();
    QWidget::mousePressEvent(event);
}

但是,即使该事件到达事件接收器,鼠标事件似乎也没有执行。我错过了什么?我会很感激任何意见

标签: c++qt

解决方案


尝试event->accept();在 EventReceiver 中不使用它。如 Qt Docs 中所述:

可以传播的事件有一个 accept() 和一个 ignore() 函数,您可以调用它们来告诉 Qt 您“接受”或“忽略”该事件。如果事件处理程序对事件调用 accept(),则该事件不会被进一步传播;如果事件处理程序调用ignore(),Qt 会尝试寻找另一个接收器。

这就是QWidget::mousePressEvent(event);里面没有被调用的原因void EventReceiver::mousePressEvent(QMouseEvent * event)


推荐阅读