C++ QWheelEvent::ignore()不';你不能在升级的QLineEdit中工作吗?

C++ QWheelEvent::ignore()不';你不能在升级的QLineEdit中工作吗?,c++,qt,events,mousewheel,C++,Qt,Events,Mousewheel,我将我的QLineEdit升级为自定义小部件,并尝试重新实现鼠标事件处理程序。我需要通过基于QLineEdit的小部件的父级处理除mouseDoubleClickEvent()之外的所有鼠标事件(父级是自定义可滚动区域)。除了wheeleevent()之外,所有功能都很好QLineEdit仍然是鼠标滚轮手柄,而父项仍然不是。 这是我的升级版QLineEdit: HeightLineEdit::HeightLineEdit(QWidget* parent) : QLineEdit(parent)

我将我的
QLineEdit
升级为自定义小部件,并尝试重新实现鼠标事件处理程序。我需要通过基于
QLineEdit
的小部件的父级处理除
mouseDoubleClickEvent()
之外的所有鼠标事件(父级是自定义可滚动区域)。除了
wheeleevent()
之外,所有功能都很好
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();
}
来自:“控制盘事件被发送到鼠标光标下的小部件,但如果该小部件不处理事件,它们将被发送到焦点小部件。”


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

尝试在父级中安装事件筛选器:父级已经有事件筛选器,并且轮子在空闲的父级空间中可以正常工作。我需要家长处理滚轮滚动,即使它与子小部件重叠。也许我不完全理解您对子小部件上的事件过滤器的建议。在我的例子中,它与处理函数一样有效。在事件过滤器中,我只需列出
switch{}
中的所有
QEvent
类型,并在必要时调用
QEvent::ignore()
。同样的效果。我删除了可能令人困惑的部分,这只是为了第二个建议,但无论如何都不是答案的相关信息。