There is a very simple way to implement using QPushButton to display the current color and pickup when pressed:
Definition:
#include <QPushButton> #include <QColor> class SelectColorButton : public QPushButton { Q_OBJECT public: SelectColorButton( QWidget* parent ); void setColor( const QColor& color ); const QColor& getColor(); public slots: void updateColor(); void changeColor(); private: QColor color; };
Implementation:
#include <QColorDialog> SelectColorButton::SelectColorButton( QWidget* parent ) { connect( this, SIGNAL(clicked()), this, SLOT(changeColor()) ); } void SelectColorButton::updateColor() { setStyleSheet( "background-color: " + color.name() ); } void SelectColorButton::changeColor() { QColor newColor = QColorDialog::getColor(color,parentWidget()); if ( newColor != color ) { setColor( newColor ); } } void SelectColorButton::setColor( const QColor& color ) { this->color = color; updateColor(); } const QColor& SelectColorButton::getColor() { return color; }
jpo38 source share