mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-14 00:07:35 -04:00
Update QgsColorButton so it shows a color chooser on click
This commit is contained in:
parent
12f09471a4
commit
4339fdcd94
@ -7,15 +7,79 @@ class QgsColorButton : QToolButton
|
|||||||
%End
|
%End
|
||||||
|
|
||||||
public:
|
public:
|
||||||
QgsColorButton( QWidget *parent = 0 );
|
/**
|
||||||
|
* Construct a new color button.
|
||||||
|
*
|
||||||
|
* @param parent The parent QWidget for the dialog
|
||||||
|
* @param cdt The title to show in the color chooser dialog
|
||||||
|
* @param cdo Options for the color chooser dialog
|
||||||
|
* @note changed in 1.9
|
||||||
|
*/
|
||||||
|
QgsColorButton( QWidget *parent = 0, QString cdt = "Select Color", QColorDialog::ColorDialogOptions cdo = 0 );
|
||||||
~QgsColorButton();
|
~QgsColorButton();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Specify the current color. Will emit a colorChanged signal if the color is different to the previous.
|
||||||
|
*
|
||||||
|
* @param color the new color
|
||||||
|
* @note added in 1.9
|
||||||
|
*/
|
||||||
void setColor( const QColor &color );
|
void setColor( const QColor &color );
|
||||||
|
/**
|
||||||
|
* Return the currently selected color.
|
||||||
|
*
|
||||||
|
* @return the currently selected color
|
||||||
|
* @note added in 1.9
|
||||||
|
*/
|
||||||
QColor color() const;
|
QColor color() const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Specify the options for the color chooser dialog (e.g. alpha).
|
||||||
|
*
|
||||||
|
* @param cdo Options for the color chooser dialog
|
||||||
|
* @note added in 1.9
|
||||||
|
*/
|
||||||
|
void setColorDialogOptions( QColorDialog::ColorDialogOptions cdo );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the options for the color chooser dialog.
|
||||||
|
*
|
||||||
|
* @return Options for the color chooser dialog
|
||||||
|
* @note added in 1.9
|
||||||
|
*/
|
||||||
|
QColorDialog::ColorDialogOptions colorDialogOptions();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the title, which the color chooser dialog will show.
|
||||||
|
*
|
||||||
|
* @param cdt Title for the color chooser dialog
|
||||||
|
* @note added in 1.9
|
||||||
|
*/
|
||||||
|
void setColorDialogTitle( QString cdt );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the title, which the color chooser dialog shows.
|
||||||
|
*
|
||||||
|
* @return Title for the color chooser dialog
|
||||||
|
* @note added in 1.9
|
||||||
|
*/
|
||||||
|
QString colorDialogTitle();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void paintEvent( QPaintEvent *e );
|
void paintEvent( QPaintEvent *e );
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
void onButtonClicked();
|
||||||
|
|
||||||
|
signals:
|
||||||
|
/**
|
||||||
|
* Is emitted, whenever a new color is accepted. The color is always valid.
|
||||||
|
* In case the new color is the same, no signal is emitted, to avoid infinite loops.
|
||||||
|
*
|
||||||
|
* @param color New color
|
||||||
|
* @note added in 1.9
|
||||||
|
*/
|
||||||
|
void colorChanged( const QColor &color );
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -113,6 +113,8 @@ ENDIF (WITH_TOUCH)
|
|||||||
|
|
||||||
SET(QGIS_GUI_MOC_HDRS
|
SET(QGIS_GUI_MOC_HDRS
|
||||||
|
|
||||||
|
qgscolorbutton.h
|
||||||
|
|
||||||
raster/qgsrasterminmaxwidget.h
|
raster/qgsrasterminmaxwidget.h
|
||||||
raster/qgspalettedrendererwidget.h
|
raster/qgspalettedrendererwidget.h
|
||||||
raster/qgsmultibandcolorrendererwidget.h
|
raster/qgsmultibandcolorrendererwidget.h
|
||||||
@ -203,7 +205,6 @@ SET(QGIS_GUI_HDRS
|
|||||||
qgisgui.h
|
qgisgui.h
|
||||||
qgisinterface.h
|
qgisinterface.h
|
||||||
qgscharacterselectdialog.h
|
qgscharacterselectdialog.h
|
||||||
qgscolorbutton.h
|
|
||||||
qgscursors.h
|
qgscursors.h
|
||||||
qgsencodingfiledialog.h
|
qgsencodingfiledialog.h
|
||||||
qgsfiledropedit.h
|
qgsfiledropedit.h
|
||||||
|
@ -31,15 +31,31 @@
|
|||||||
by Qt Designer to do the same thing.
|
by Qt Designer to do the same thing.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
QgsColorButton::QgsColorButton( QWidget *parent )
|
QgsColorButton::QgsColorButton( QWidget *parent, QString cdt, QColorDialog::ColorDialogOptions cdo )
|
||||||
: QToolButton( parent )
|
: QToolButton( parent )
|
||||||
|
, mColorDialogTitle( cdt )
|
||||||
|
, mColorDialogOptions( cdo )
|
||||||
{
|
{
|
||||||
setToolButtonStyle( Qt::ToolButtonTextOnly ); // decrease default button height
|
setToolButtonStyle( Qt::ToolButtonTextOnly ); // decrease default button height
|
||||||
|
connect( this, SIGNAL( clicked() ), this, SLOT( onButtonClicked() ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
QgsColorButton::~QgsColorButton()
|
QgsColorButton::~QgsColorButton()
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
void QgsColorButton::onButtonClicked()
|
||||||
|
{
|
||||||
|
#if QT_VERSION >= 0x040500
|
||||||
|
QColor newColor = QColorDialog::getColor( color(), 0, mColorDialogTitle, mColorDialogOptions );
|
||||||
|
#else
|
||||||
|
QColor newColor = QColorDialog::getColor( color() );
|
||||||
|
#endif
|
||||||
|
if ( newColor.isValid() )
|
||||||
|
{
|
||||||
|
setColor( newColor );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Paints button in response to a paint event.
|
Paints button in response to a paint event.
|
||||||
*/
|
*/
|
||||||
@ -62,10 +78,41 @@ void QgsColorButton::paintEvent( QPaintEvent *e )
|
|||||||
|
|
||||||
void QgsColorButton::setColor( const QColor &color )
|
void QgsColorButton::setColor( const QColor &color )
|
||||||
{
|
{
|
||||||
|
QColor oldColor = mColor;
|
||||||
|
|
||||||
mColor = color;
|
mColor = color;
|
||||||
update();
|
update();
|
||||||
|
|
||||||
|
if ( oldColor != mColor )
|
||||||
|
{
|
||||||
|
emit( colorChanged( mColor ) );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QColor QgsColorButton::color() const
|
||||||
|
{
|
||||||
|
return mColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
void QgsColorButton::setColorDialogOptions( QColorDialog::ColorDialogOptions cdo )
|
||||||
|
{
|
||||||
|
mColorDialogOptions = cdo;
|
||||||
|
}
|
||||||
|
|
||||||
|
QColorDialog::ColorDialogOptions QgsColorButton::colorDialogOptions()
|
||||||
|
{
|
||||||
|
return mColorDialogOptions;
|
||||||
|
}
|
||||||
|
|
||||||
|
void QgsColorButton::setColorDialogTitle( QString cdt )
|
||||||
|
{
|
||||||
|
mColorDialogTitle = cdt;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString QgsColorButton::colorDialogTitle()
|
||||||
|
{
|
||||||
|
return mColorDialogTitle;
|
||||||
|
}
|
||||||
|
|
||||||
//////////////////
|
//////////////////
|
||||||
|
|
||||||
|
@ -15,26 +15,96 @@
|
|||||||
#ifndef QGSCOLORBUTTON_H
|
#ifndef QGSCOLORBUTTON_H
|
||||||
#define QGSCOLORBUTTON_H
|
#define QGSCOLORBUTTON_H
|
||||||
|
|
||||||
|
#include <QColorDialog>
|
||||||
#include <QToolButton>
|
#include <QToolButton>
|
||||||
#include <QPushButton>
|
#include <QPushButton>
|
||||||
|
|
||||||
/** \ingroup gui
|
/** \ingroup gui
|
||||||
* A cross platform button subclass for selecting colors.
|
* A cross platform button subclass for selecting colors. Will open a color chooser dialog when clicked.
|
||||||
*/
|
*/
|
||||||
class GUI_EXPORT QgsColorButton: public QToolButton
|
class GUI_EXPORT QgsColorButton: public QToolButton
|
||||||
{
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
QgsColorButton( QWidget *parent = 0 );
|
/**
|
||||||
|
* Construct a new color button.
|
||||||
|
*
|
||||||
|
* @param parent The parent QWidget for the dialog
|
||||||
|
* @param cdt The title to show in the color chooser dialog
|
||||||
|
* @param cdo Options for the color chooser dialog
|
||||||
|
* @note changed in 1.9
|
||||||
|
*/
|
||||||
|
QgsColorButton( QWidget *parent = 0, QString cdt = tr( "Select Color" ), QColorDialog::ColorDialogOptions cdo = 0 );
|
||||||
~QgsColorButton();
|
~QgsColorButton();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Specify the current color. Will emit a colorChanged signal if the color is different to the previous.
|
||||||
|
*
|
||||||
|
* @param color the new color
|
||||||
|
* @note added in 1.9
|
||||||
|
*/
|
||||||
void setColor( const QColor &color );
|
void setColor( const QColor &color );
|
||||||
QColor color() const { return mColor; }
|
/**
|
||||||
|
* Return the currently selected color.
|
||||||
|
*
|
||||||
|
* @return the currently selected color
|
||||||
|
* @note added in 1.9
|
||||||
|
*/
|
||||||
|
QColor color() const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Specify the options for the color chooser dialog (e.g. alpha).
|
||||||
|
*
|
||||||
|
* @param cdo Options for the color chooser dialog
|
||||||
|
* @note added in 1.9
|
||||||
|
*/
|
||||||
|
void setColorDialogOptions( QColorDialog::ColorDialogOptions cdo );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the options for the color chooser dialog.
|
||||||
|
*
|
||||||
|
* @return Options for the color chooser dialog
|
||||||
|
* @note added in 1.9
|
||||||
|
*/
|
||||||
|
QColorDialog::ColorDialogOptions colorDialogOptions();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the title, which the color chooser dialog will show.
|
||||||
|
*
|
||||||
|
* @param cdt Title for the color chooser dialog
|
||||||
|
* @note added in 1.9
|
||||||
|
*/
|
||||||
|
void setColorDialogTitle( QString cdt );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the title, which the color chooser dialog shows.
|
||||||
|
*
|
||||||
|
* @return Title for the color chooser dialog
|
||||||
|
* @note added in 1.9
|
||||||
|
*/
|
||||||
|
QString colorDialogTitle();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void paintEvent( QPaintEvent *e );
|
void paintEvent( QPaintEvent *e );
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
void onButtonClicked();
|
||||||
|
|
||||||
|
signals:
|
||||||
|
/**
|
||||||
|
* Is emitted, whenever a new color is accepted. The color is always valid.
|
||||||
|
* In case the new color is the same, no signal is emitted, to avoid infinite loops.
|
||||||
|
*
|
||||||
|
* @param color New color
|
||||||
|
* @note added in 1.9
|
||||||
|
*/
|
||||||
|
void colorChanged( const QColor &color );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
QString mColorDialogTitle;
|
||||||
QColor mColor;
|
QColor mColor;
|
||||||
|
QColorDialog::ColorDialogOptions mColorDialogOptions;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user