QLineEdit
をカスタムウィジェットにプロモートし、マウスイベントハンドラを再実装しようとしました。私のQLineEdit
ベースのウィジェット(親はカスタムスクロールエリアです)の親によってmouseDoubleClickEvent()
以外のすべてのマウスイベントを処理する必要があります。すべては、wheelEvent()
を除いてうまくいきます。 QLineEdit
は依然としてマウスホイールを処理していますが、まだ親はありません。ここ は私の昇進QLineEdit
です:QWheelEvent :: ignore()は昇格した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();
}
親にイベントフィルタをインストールしてみます:http://doc.qt.io/qt-4.8/eventsandfilters.html#event-filtersおよびhttp://stackoverflow.com/questions/16279003/how-to-disable -scrolling-functionality-on-wheel-event-qgraphicsview-qt-c –
親にはすでにイベントフィルタがあり、ホイールは空き親領域で正常に動作します。子ウィジェットと重なっていてもスクロールのためのホイールを扱うには親が必要です。 – esterlein