[英]QWheelEvent::ignore() doesn't work in promoted QLineEdit?
我將QLineEdit
提升為自定義窗口小部件,並嘗試重新實現鼠標事件處理程序。 我需要通過基於QLineEdit
的小部件(父級是自定義可滾動區域)的父級來處理除mouseDoubleClickEvent()
之外的所有鼠標事件。 除了wheelEvent()
之外, 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();
}
來自QWheelEvent
文檔 :“車輪事件在鼠標光標下發送到窗口小部件,但是如果該窗口小部件不處理該事件,則將它們發送到焦點窗口小部件。”
如果希望父級為子級小部件處理它們,則可以在子級小部件上安裝事件過濾器 ,也可以直接從子級的wheelEvent
方法調用父級小部件上的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.