qt/LedOK/ColorDialog/PreviewColorArea.cpp
2022-01-04 18:11:48 +08:00

56 lines
1.0 KiB
C++

#include <QStylePainter>
#include "PreviewColorArea.h"
PreviewColorArea::PreviewColorArea(QWidget *parent)
: QWidget(parent)
, m_curColor(Qt::black)
, m_newColor(Qt::black)
{
}
PreviewColorArea::~PreviewColorArea()
{
}
void PreviewColorArea::setCurColor(const QColor &c)
{
m_curColor = c;
repaint();
}
void PreviewColorArea::setNewColor(const QColor &c)
{
m_newColor = c;
update();
}
void PreviewColorArea::paintEvent(QPaintEvent *)
{
QStylePainter painter(this);
paint(painter, geometry());
}
void PreviewColorArea::resizeEvent(QResizeEvent *)
{
update();
}
void PreviewColorArea::paint(QPainter &painter, QRect rect) const
{
int iMiddleWidth = rect.width() / 2;
int iHeight = rect.height();
painter.fillRect(0, 0, iMiddleWidth, iHeight, m_curColor);
painter.fillRect(iMiddleWidth, 0, iMiddleWidth, iHeight, m_newColor);
painter.setPen(QPen(Qt::black, 1));
painter.drawRect(0, 0, width() - 1, height() - 1);
}
void PreviewColorArea::svChangedSlot(int h, int s, int v)
{
m_newColor.setHsv(h, s, v);
update();
emit svChangedSignal(h, s, v);
}