1、mycolorbutton.h
#include
#include
#include
class MyColorButtonPrivate;
class MyColorButton : public QToolButton
{
Q_OBJECT
public:
MyColorButton(QWidget* parent);
~MyColorButton();
QColor color() const;
public slots:
void setColor(const QColor& color);
signals:
void colorChanged(const QColor& color);
private:
QScopedPointer
Q_DECLARE_PRIVATE(MyColorButton)
Q_DISABLE_COPY(MyColorButton)
Q_PRIVATE_SLOT(d_func(), void slotEditColor())
};
2、mycolorbutton_p.h
#include "mycolorbutton.h"
class MyColorButtonPrivate
{
public:
QColor m_color;
void slotEditColor();
MyColorButton* q_ptr;
Q_DECLARE_PUBLIC(MyColorButton)
};
3、mycolorbutton.cpp
#include
#include "mycolorbutton_p.h"
void MyColorButtonPrivate::slotEditColor()
{
const QColor newColor = QColorDialog::getColor(m_color, q_ptr, QString(), QColorDialog::ShowAlphaChannel);
if(!newColor.isValid() || newColor == q_ptr->color())
return;
q_ptr->setColor(newColor);
emit q_ptr->colorChanged(m_color);
}
/////////////////////////////////////////////////////////////////
MyColorButton::MyColorButton(QWidget* parent)
:QToolButton(parent), d_ptr(new MyColorButtonPrivate)
{
d_ptr->q_ptr = this;
connect(this, SIGNAL(clicked()), this, SLOT(slotEditColor()));
}
MyColorButton::~MyColorButton()
{
}
QColor MyColorButton::color() const
{
return d_ptr->m_color;
}
void MyColorButton::setColor(const QColor &color)
{
d_ptr->m_color = color;
}
#include "moc_mycolorbutton.cpp"
手机扫一扫
移动阅读更方便
你可能感兴趣的文章