簡體   English   中英

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

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM