我将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();
}
答案 0 :(得分:0)
从QWheelEvent
documentation:“轮子事件被发送到鼠标光标下的小部件,但是如果该小部件不处理事件,则它们被发送到焦点小部件。”
如果您希望父级为子窗口小部件处理它们,您可以在子窗口小部件上安装event filter,也可以直接从子窗口wheelEvent
调用父窗口小部件上的方法方法