QWheelEvent :: ignore () не работает в продвинутом QLineEdit?

Я продвигаю мой 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

Решение

От QWheelEvent документация: «События колеса отправляются виджету под курсором мыши, но если этот виджет не обрабатывает событие, они отправляются виджету фокуса».

Если вы хотите, чтобы родитель обрабатывал их для дочернего виджета, вы можете установить фильтр событий на дочернем виджете, или вы можете напрямую вызвать метод на родительском виджете из дочернего виджета wheelEvent метод.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]