Пример #1
0
void QgsFilterLineEdit::mousePressEvent( QMouseEvent* e )
{
  if ( !mFocusInEvent )
    QLineEdit::mousePressEvent( e );
  else
    mFocusInEvent = false;

  if ( shouldShowClear() && clearRect().contains( e->pos() ) )
  {
    clearValue();
  }
}
Пример #2
0
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 );
  }
}
Пример #3
0
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;
  }
}
Пример #4
0
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();
  }
}
Пример #5
0
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;
  }
}