Ich fördere meine QLineEdit
zu einem benutzerdefinierten Widget und versuchen, Maus Ereignishandler neu zu implementieren. Ich muss alle Mausereignisse außer von Eltern meines QLineEdit
-basierten Widgets behandeln (Eltern ist ein benutzerdefinierter scrollbarer Bereich). Alles funktioniert gut außer wheelEvent()
. QLineEdit
ist immer noch Mausrad und Elternteil ist immer noch nicht.QWheelEvent :: ignore() funktioniert nicht in hochgestuften 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();
}
Versuchen Sie, Ereignisfilter in Eltern zu installieren: http://doc.qt.io/qt-4.8/eventsandfilters.html#event-filters und http://stackoverflow.com/questions/16279003/how-to-disable -scrolling-funktionality-on-wheel-event-qgraphicsview-qt-c –
Parent hat bereits einen Ereignisfilter und das Rad funktioniert einwandfrei im freien Elternraum. Ich brauche Eltern, um mit dem Rad zu scrollen, auch wenn es sich mit dem Kind-Widget überschneidet. – esterlein