Я продвигаю мой 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();
}
От QWheelEvent
документация: «События колеса отправляются виджету под курсором мыши, но если этот виджет не обрабатывает событие, они отправляются виджету фокуса».
Если вы хотите, чтобы родитель обрабатывал их для дочернего виджета, вы можете установить фильтр событий на дочернем виджете, или вы можете напрямую вызвать метод на родительском виджете из дочернего виджета wheelEvent
метод.
Других решений пока нет …