void QgsFilterLineEdit::mousePressEvent( QMouseEvent* e ) { if ( !mFocusInEvent ) QLineEdit::mousePressEvent( e ); else mFocusInEvent = false; if ( shouldShowClear() && clearRect().contains( e->pos() ) ) { clearValue(); } }
void QgsFilterLineEdit::paintEvent( QPaintEvent* e ) { QLineEdit::paintEvent( e ); if ( shouldShowClear() ) { QRect r = clearRect(); QPainter p( this ); if ( mClearHover ) p.drawPixmap( r.left() , r.top() , mClearHoverPixmap ); else p.drawPixmap( r.left() , r.top() , mClearIconPixmap ); } }
void QgsFilterLineEdit::updateClearIcon() { bool showClear = shouldShowClear(); if ( showClear && !mClearAction ) { mClearAction = new QAction( mClearIcon, QString(), this ); mClearAction->setCheckable( false ); addAction( mClearAction, QLineEdit::TrailingPosition ); connect( mClearAction, &QAction::triggered, this, &QgsFilterLineEdit::clearValue ); } else if ( !showClear && mClearAction ) { mClearAction->deleteLater(); mClearAction = nullptr; } }
void QgsFilterLineEdit::mouseMoveEvent( QMouseEvent* e ) { QLineEdit::mouseMoveEvent( e ); if ( shouldShowClear() && clearRect().contains( e->pos() ) ) { if ( !mClearHover ) { setCursor( Qt::ArrowCursor ); mClearHover = true; update(); } } else if ( mClearHover ) { setCursor( Qt::IBeamCursor ); mClearHover = false; update(); } }
void QgsFilterLineEdit::onTextChanged( const QString &text ) { if ( isNull() ) { setStyleSheet( QString( "QLineEdit { font: italic; color: gray; } %1" ).arg( mStyleSheet ) ); emit valueChanged( QString::null ); } else { setStyleSheet( mStyleSheet ); emit valueChanged( text ); } if ( mClearHover && !shouldShowClear() ) { setCursor( Qt::IBeamCursor ); mClearHover = false; } }