mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-15 00:04:00 -04:00
option to show a search icon in QgsFilterLineEdit
This commit is contained in:
parent
fe75e1f2a6
commit
f3102bbf8f
@ -554,6 +554,7 @@
|
|||||||
<file>themes/default/processingModel.svg</file>
|
<file>themes/default/processingModel.svg</file>
|
||||||
<file>themes/default/processingScript.svg</file>
|
<file>themes/default/processingScript.svg</file>
|
||||||
<file>themes/default/processingAlgorithm.svg</file>
|
<file>themes/default/processingAlgorithm.svg</file>
|
||||||
|
<file>themes/default/search.svg</file>
|
||||||
</qresource>
|
</qresource>
|
||||||
<qresource prefix="/images/tips">
|
<qresource prefix="/images/tips">
|
||||||
<file alias="symbol_levels.png">qgis_tips/symbol_levels.png</file>
|
<file alias="symbol_levels.png">qgis_tips/symbol_levels.png</file>
|
||||||
|
66
images/themes/default/search.svg
Normal file
66
images/themes/default/search.svg
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
height="16"
|
||||||
|
version="1.1"
|
||||||
|
viewBox="0 0 16 16"
|
||||||
|
width="16"
|
||||||
|
id="svg2"
|
||||||
|
inkscape:version="0.91 r13725"
|
||||||
|
sodipodi:docname="search.svg">
|
||||||
|
<metadata
|
||||||
|
id="metadata15">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<sodipodi:namedview
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1"
|
||||||
|
objecttolerance="10"
|
||||||
|
gridtolerance="10"
|
||||||
|
guidetolerance="10"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:window-width="1732"
|
||||||
|
inkscape:window-height="977"
|
||||||
|
id="namedview13"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="11.313708"
|
||||||
|
inkscape:cx="3.1800974"
|
||||||
|
inkscape:cy="-12.185144"
|
||||||
|
inkscape:window-x="414"
|
||||||
|
inkscape:window-y="64"
|
||||||
|
inkscape:window-maximized="0"
|
||||||
|
inkscape:current-layer="svg2" />
|
||||||
|
<desc
|
||||||
|
id="desc6" />
|
||||||
|
<defs
|
||||||
|
id="defs8" />
|
||||||
|
<g
|
||||||
|
id="Page-1"
|
||||||
|
style="fill:none;fill-rule:evenodd;stroke:none;stroke-width:1"
|
||||||
|
transform="matrix(0.56015021,0,0,0.56015021,-1.3609013,-1.3602825)">
|
||||||
|
<g
|
||||||
|
id="icon-111-search"
|
||||||
|
style="fill:#929292">
|
||||||
|
<path
|
||||||
|
d="M 19.427116,21.427116 C 18.03725,22.41748 16.336652,23 14.5,23 9.8055794,23 6,19.194421 6,14.5 6,9.8055794 9.8055794,6 14.5,6 c 4.694421,0 8.5,3.8055794 8.5,8.5 0,1.836652 -0.58252,3.53725 -1.572884,4.927116 l 5.584802,5.584802 c 0.550201,0.550201 0.545613,1.430551 -2e-4,1.976363 l -0.02344,0.02344 c -0.544416,0.544417 -1.430661,0.545902 -1.976363,2e-4 l -5.584802,-5.584802 0,0 z M 14.5,21 C 18.089851,21 21,18.089851 21,14.5 21,10.910149 18.089851,8 14.5,8 10.910149,8 8,10.910149 8,14.5 8,18.089851 10.910149,21 14.5,21 l 0,0 z"
|
||||||
|
id="search"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.3 KiB |
@ -68,6 +68,19 @@ class QgsFilterLineEdit : QLineEdit
|
|||||||
*/
|
*/
|
||||||
QString nullValue() const;
|
QString nullValue() const;
|
||||||
|
|
||||||
|
/** Define if a search icon shall be shown on the left of the image
|
||||||
|
* when no text is entered
|
||||||
|
* @param visible set to false to hide the search icon
|
||||||
|
* @note added in QGIS 3.0
|
||||||
|
*/
|
||||||
|
void setShowSearchIcon( bool visible );
|
||||||
|
|
||||||
|
/** Returns if a search icon shall be shown on the left of the image
|
||||||
|
* when no text is entered
|
||||||
|
* @note added in QGIS 3.0
|
||||||
|
*/
|
||||||
|
bool showSearchIcon() const;
|
||||||
|
|
||||||
/** Sets the default value for the widget. The default value is a value
|
/** Sets the default value for the widget. The default value is a value
|
||||||
* which the widget will be reset to if it is cleared and the clearMode()
|
* which the widget will be reset to if it is cleared and the clearMode()
|
||||||
* is equal to ClearToDefault.
|
* is equal to ClearToDefault.
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
QgsFilterLineEdit::QgsFilterLineEdit( QWidget* parent, const QString& nullValue )
|
QgsFilterLineEdit::QgsFilterLineEdit( QWidget* parent, const QString& nullValue )
|
||||||
: QLineEdit( parent )
|
: QLineEdit( parent )
|
||||||
, mClearButtonVisible( true )
|
, mClearButtonVisible( true )
|
||||||
|
, mSearchIconVisible( false )
|
||||||
, mClearMode( ClearToNull )
|
, mClearMode( ClearToNull )
|
||||||
, mNullValue( nullValue )
|
, mNullValue( nullValue )
|
||||||
, mFocusInEvent( false )
|
, mFocusInEvent( false )
|
||||||
@ -40,6 +41,10 @@ QgsFilterLineEdit::QgsFilterLineEdit( QWidget* parent, const QString& nullValue
|
|||||||
QIcon hoverIcon = QgsApplication::getThemeIcon( "/mIconClearTextHover.svg" );
|
QIcon hoverIcon = QgsApplication::getThemeIcon( "/mIconClearTextHover.svg" );
|
||||||
mClearHoverPixmap = hoverIcon.pixmap( mClearIconSize );
|
mClearHoverPixmap = hoverIcon.pixmap( mClearIconSize );
|
||||||
|
|
||||||
|
QIcon searchIcon = QgsApplication::getThemeIcon( "/search.svg" );
|
||||||
|
mSearchIconSize = QSize( 16, 16 );
|
||||||
|
mSearchIconPixmap = searchIcon.pixmap( mSearchIconSize );
|
||||||
|
|
||||||
connect( this, SIGNAL( textChanged( const QString& ) ), this,
|
connect( this, SIGNAL( textChanged( const QString& ) ), this,
|
||||||
SLOT( onTextChanged( const QString& ) ) );
|
SLOT( onTextChanged( const QString& ) ) );
|
||||||
}
|
}
|
||||||
@ -55,6 +60,16 @@ void QgsFilterLineEdit::setShowClearButton( bool visible )
|
|||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QgsFilterLineEdit::setShowSearchIcon( bool visible )
|
||||||
|
{
|
||||||
|
bool changed = mSearchIconVisible != visible;
|
||||||
|
if ( changed )
|
||||||
|
{
|
||||||
|
mSearchIconVisible = visible;
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void QgsFilterLineEdit::mousePressEvent( QMouseEvent* e )
|
void QgsFilterLineEdit::mousePressEvent( QMouseEvent* e )
|
||||||
{
|
{
|
||||||
if ( !mFocusInEvent )
|
if ( !mFocusInEvent )
|
||||||
@ -134,6 +149,13 @@ void QgsFilterLineEdit::paintEvent( QPaintEvent* e )
|
|||||||
else
|
else
|
||||||
p.drawPixmap( r.left() , r.top() , mClearIconPixmap );
|
p.drawPixmap( r.left() , r.top() , mClearIconPixmap );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( mSearchIconVisible && !shouldShowClear() )
|
||||||
|
{
|
||||||
|
QRect r = searchRect();
|
||||||
|
QPainter p( this );
|
||||||
|
p.drawPixmap( r.left() , r.top() , mSearchIconPixmap );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void QgsFilterLineEdit::leaveEvent( QEvent* e )
|
void QgsFilterLineEdit::leaveEvent( QEvent* e )
|
||||||
@ -191,3 +213,12 @@ QRect QgsFilterLineEdit::clearRect() const
|
|||||||
mClearIconSize.width(),
|
mClearIconSize.width(),
|
||||||
mClearIconSize.height() );
|
mClearIconSize.height() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QRect QgsFilterLineEdit::searchRect() const
|
||||||
|
{
|
||||||
|
int frameWidth = style()->pixelMetric( QStyle::PM_DefaultFrameWidth );
|
||||||
|
return QRect( rect().left() + frameWidth * 2,
|
||||||
|
( rect().bottom() + 1 - mSearchIconSize.height() ) / 2,
|
||||||
|
mSearchIconSize.width(),
|
||||||
|
mSearchIconSize.height() );
|
||||||
|
}
|
||||||
|
@ -41,6 +41,7 @@ class GUI_EXPORT QgsFilterLineEdit : public QLineEdit
|
|||||||
Q_PROPERTY( QString defaultValue READ defaultValue WRITE setDefaultValue )
|
Q_PROPERTY( QString defaultValue READ defaultValue WRITE setDefaultValue )
|
||||||
Q_PROPERTY( QString value READ value WRITE setValue NOTIFY valueChanged )
|
Q_PROPERTY( QString value READ value WRITE setValue NOTIFY valueChanged )
|
||||||
Q_PROPERTY( bool showClearButton READ showClearButton WRITE setShowClearButton )
|
Q_PROPERTY( bool showClearButton READ showClearButton WRITE setShowClearButton )
|
||||||
|
Q_PROPERTY( bool showSearchIcon READ showSearchIcon WRITE setShowSearchIcon )
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
@ -98,6 +99,19 @@ class GUI_EXPORT QgsFilterLineEdit : public QLineEdit
|
|||||||
*/
|
*/
|
||||||
QString nullValue() const { return mNullValue; }
|
QString nullValue() const { return mNullValue; }
|
||||||
|
|
||||||
|
/** Define if a search icon shall be shown on the left of the image
|
||||||
|
* when no text is entered
|
||||||
|
* @param visible set to false to hide the search icon
|
||||||
|
* @note added in QGIS 3.0
|
||||||
|
*/
|
||||||
|
void setShowSearchIcon( bool visible );
|
||||||
|
|
||||||
|
/** Returns if a search icon shall be shown on the left of the image
|
||||||
|
* when no text is entered
|
||||||
|
* @note added in QGIS 3.0
|
||||||
|
*/
|
||||||
|
bool showSearchIcon() const { return mSearchIconVisible; }
|
||||||
|
|
||||||
/** Sets the default value for the widget. The default value is a value
|
/** Sets the default value for the widget. The default value is a value
|
||||||
* which the widget will be reset to if it is cleared and the clearMode()
|
* which the widget will be reset to if it is cleared and the clearMode()
|
||||||
* is equal to ClearToDefault.
|
* is equal to ClearToDefault.
|
||||||
@ -179,6 +193,7 @@ class GUI_EXPORT QgsFilterLineEdit : public QLineEdit
|
|||||||
private:
|
private:
|
||||||
|
|
||||||
bool mClearButtonVisible;
|
bool mClearButtonVisible;
|
||||||
|
bool mSearchIconVisible;
|
||||||
|
|
||||||
ClearMode mClearMode;
|
ClearMode mClearMode;
|
||||||
|
|
||||||
@ -192,10 +207,14 @@ class GUI_EXPORT QgsFilterLineEdit : public QLineEdit
|
|||||||
QPixmap mClearIconPixmap;
|
QPixmap mClearIconPixmap;
|
||||||
QPixmap mClearHoverPixmap;
|
QPixmap mClearHoverPixmap;
|
||||||
|
|
||||||
|
QSize mSearchIconSize;
|
||||||
|
QPixmap mSearchIconPixmap;
|
||||||
|
|
||||||
//! Returns true if clear button should be shown
|
//! Returns true if clear button should be shown
|
||||||
bool shouldShowClear() const;
|
bool shouldShowClear() const;
|
||||||
|
|
||||||
QRect clearRect() const;
|
QRect clearRect() const;
|
||||||
|
QRect searchRect() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
/// @cond PRIVATE
|
/// @cond PRIVATE
|
||||||
|
Loading…
x
Reference in New Issue
Block a user