QWheelEvent :: ignore()在提升的QLineEdit中不起作用?

时间:2016-12-26 17:01:10

标签: c++ qt events mousewheel

我将QLineEdit提升为自定义窗口小部件并尝试重新实现鼠标事件处理程序。我需要处理除mouseDoubleClickEvent()之外的所有鼠标事件,我的基于QLineEdit的窗口小部件的父项(父项是自定义可滚动区域)。除wheelEvent()外,一切正常。 QLineEdit仍处理鼠标滚轮,而父级仍未处理。 这是我提升的QLineEdit

HeightLineEdit::HeightLineEdit(QWidget* parent) :
QLineEdit(parent)
{
    this->setFocusPolicy(Qt::NoFocus);
}

void HeightLineEdit::mousePressEvent(QMouseEvent* event)
{
    event->ignore();
}

void HeightLineEdit::mouseMoveEvent(QMouseEvent* event)
{
    event->ignore();
}

void HeightLineEdit::mouseReleaseEvent(QMouseEvent* event)
{
    event->ignore();
}

void HeightLineEdit::mouseDoubleClickEvent(QMouseEvent* event)
{
    this->setFocus();
    this->selectAll();
}

void HeightLineEdit::wheelEvent(QWheelEvent* event)
{
    event->ignore();
}

1 个答案:

答案 0 :(得分:0)

QWheelEvent documentation:“轮子事件被发送到鼠标光标下的小部件,但是如果该小部件不处理事件,则它们被发送到焦点小部件。”

如果您希望父级为子窗口小部件处理它们,您可以在子窗口小部件上安装event filter,也可以直接从子窗口wheelEvent调用父窗口小部件上的方法方法