Qt学习-模仿Qt实现一个colorbutton
阅读原文时间:2023年07月11日阅读:1

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 d_ptr;
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"

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章